PI Services

Le blog des collaborateurs de PI Services

Utilisation de la commande CopyPe dans un contexte Powershell

 

Si vous exécuter CopyPe.exe dans une fenêtre PowerShell, vous aurez comme résultat :

ERROR: The following processor architecture was not found: x86.

 

image

Une petite astuce :

Lorsque vous lancez l’environnement de déploiement de l’ADK

image

En réalité, vous lancez le script DandISetEnv.bat.

image

Ce script peut être trouvé dans le répertoire suivant :

"C:\Program Files (x86)\Windows Kits\xx\Assessment and Deployment Kit\Deployment Tools"

image

Nous allons donc ajouter à ce script la ligne de commande Copype nous intéressant. Ainsi, l’exécutable Copype sera lancé dans le contexte de l’environnement de déploiement de l’ADK.

Comment allons-nous procéder ?

Pour ne pas modifier le script DandISetEnv.bat original, nous allons récupérer son contenu, le copier dans un emplacement temporaire et modifier ce fichier.

get-content "C:\Program Files (x86)\Windows Kits\xx\Assessment and Deployment Kit\Deployment Tools\DandISetEnv.bat" | Out-File "$env:temp\DandISetEnv.bat" -encoding ASCII

On ajoute la commande copype à la copie du fichier.

"" | Out-File -Append "$env:TEMP\DandISetEnv.bat" -Encoding ASCII

"copype x86 c:\MonPE_x86" | Out-File –Append "$env:TEMP\DandISetEnv.bat" -Encoding ASCII

 

Et on exécute le script

cd $env:TEMP

.\DandISetEnv.bat

image

Le répertoire de travail du PE est maintenant construit.

image

Identifier les Index des couleurs de cellules Excel via les objets COM sous Powershell

Vous utilisez les objets COM pour la manipulation de Excel en Powershell et vous souhaitez colorer une cellule sur votre Excel.

Voici un petit script qui va vous permettre d’identifier l’index associé à sa couleur pour la valeur de la commande .Interior.ColorIndex

 

$Excel = New-Object -ComObject excel.application
$Excel.visible = $true
$workbookHEBDO = $Excel.workbooks.add()
$serverInfoSheetHEBDO = $workbookHEBDO.Worksheets.Item(1)
$excel.cells.item(1,1) = "COLOR"
$excel.cells.item(1,1).Interior.ColorIndex =48
$excel.cells.item(1,1).Font.Bold=$True
$excel.cells.item(1,2) = "Number"
$excel.cells.item(1,2).Interior.ColorIndex =48
$excel.cells.item(1,2).Font.Bold=$True
for ($i=1; $i -le 56; $i++)
{
$excel.cells.Item($i+1, 1).Interior.ColorIndex = $i
$excel.cells.item($i+1,2) = $i
}

 

Résultat :

image

Création d’une application virtuelle pour SCVMM 2012

Pour créer notre package d’application virtualisée, vous devez installer une machine qui servira de référence.

Cette machine doit se rapprocher le plus possible en terme de configuration (registre, ..) de l’environnement sur lequel sera déployé votre application virtualisée.

Connectez-vous sur cette machine et installer le séquenceur App-V.

Les binaires sont disponibles dans la librairie VMM (Application Framework)

image

L’application permettant la capture est désormais installée.

image

Lancer l’application et cliquer sur Create a New Virtual Application Package

image

 

Cliquer sur Next

clip_image001

 

Sélectionner l’application à virtualiser. Dans notre exemple, nous allons installer Filezilla.

Cliquer sur Next

image

Donner un nom à votre Package et cliquer sur Next

image

image

 

L’installation démarre. Procéder à l’exécution de votre application avec les paramètres tel que vous désirez que ceux-ci soient capturés.

image

Une fois l’application installée, vous pouvez procéder à d’autres modifications sur la machine. Ceux-ci seront capturés.

Cliquer maintenant sur I am finished installing et cliquer sur Next

image

image

Cliquer sur Next

image

image

Cliquer sur Close

image

Vous avez maintenant fini de capturer votre application. Il faut maintenant sauvegarder votre projet.

Cliquer sur File et Save as

image

image

Le package est désormais créé. Il ne vous reste plus qu’à déplacer votre package dans la librairie VMM.

image

image

 

Dans ce blog, vous pourrez trouver un exemple d’une installation d’application virtualisée à travers un Update de service  de type In-Place dans VMM 2012

http://blog.piservices.fr/post/Mise-a-jour-de28099un-service-dans-SCVMM-2012.aspx

Mise à jour d’un service dans SCVMM 2012

 

Nous avons une VM associée à un service. Nous allons ici mettre à jour le service en installant une application virtualisée : SumatraPDF

Notre service nommé Generic Server 2K12 a été installé à partir du service Template ST –Generic Server 2K12.

image

Pour mettre à jour notre service, nous allons dupliquer le service Template ST –Generic Server 2K12, effectuer notre modification sur celui-ci et ensuite l’appliquer à notre service en production.

Aller sur le service Template à éditer

image

Faites un clic droit et cliquer Copy

image

Une copie apparait dans la console.

image

Sur celui-ci à l’aide d’un clic droit allez dans Open Designer

image

La fenêtre d’édition du service Template apparait

Double-cliquer sur votre service Template

image

 

Aller dans la section Application Configuration et cliquez sur Add et sélectionner Virtual application

image

 

Cliquez sur Browse

image

Sélectionner votre Package. Pour l’exemple, nous allons sélectionner notre package correspondant à SumatraPDF.

Cliquez sur OK.

image

 

Donnez un nom à votre application virtuelle et cliquez sur ok.

image

Cliquez maintenant sur Save and Validate.

image

 

Faites maintenant un clic droit sur le service Template dupliqué et cliquer sur Publish.

image

Nous allons maintenant appliquer notre service Template sur le service en production.

Remarque : pour que la modification apportée sur le service soit effective, il faut que la/les VM présente sous le service dispose(nt) de l’agent App-V. (Celui-ci est présent dans la librairie VMM)

Affichez les services et faites un clic droit sur le service à updater et sélectionner Set Template

image

Cliquez sur Browse pour sélectionner le service précédemment configuré.

image

 

Cliquer sur Next

image

Sélectionner Apply updates to existing to virtual machines in-place et cliquer sur Next.

Cocher la case Apply the updates et cliquer sur Next puis sur Finish

image

Le job se lance.

image

Une fois celui-ci finit, rendez vous sur la / les VMs concernés.

SumatraPDF s’est bien installé sur l’ensemble des VMs de notre service.

image

SCVMM 2012 Computer already exist lors d’un Scale-Out de service

Vous souhaitez déployer une seconde instance de votre service avec un nom prédéfinit mais lorsque vous vous apprêtez à déployer votre VM, un message d’erreur apparait :

image

Cependant, dans votre Cloud privé, aucune machine virtuelle de ce nom n’est présente.

Pour remédier à ce problème, il est nécessaire d’accéder à la base de donnée VMM sur le serveur SQL et de supprimer l’entrée présente avec ce nom de VM.

Connecter vous sur votre base de donnée VMM

image

Aller sur la table tbl_WLC_VMDeploymentConfig

image

Editer la table et rechercher la colonne ComputerName et identifier votre nom de VM posant problème.

image

Supprimer la ligne du tableau.

image

Le problème de la VM déjà existante lors du Scale-Out dans VMM n’apparait plus. La VM peut être déployée.

image

Création et affectation d’un Switch convergé depuis SCVMM 2012

Nous allons ici créer un Switch Logique au travers de VMM et l’affecter à notre hôte Hyper-V.

L’affectation du Switch via VMM  va créer dans notre exemple le Teaming des cartes ainsi que les différentes VNICs avec la QOS associé.

Dans VMM, Créer un nouveau Port Profile

image

Donner un nom à ce nouveau Profil et sélectionner la configuration de Teaming que vous désirez créer pour vos hôtes Hyper-V en sélectionnant Uplink port profile et en sélectionnant le mode de Teaming souhaité et son algorithme de Load Balancing.

image

Sélectionner les différents Network Site que vous souhaiter intégrer a votre Port Profile et cocher Enable Windows Network Virtualization.

image

Le résumé de vos actions apparait.

Cliquer sur Finish

image

 

Nous allons maintenant créer un Logical Switch.

image

 

Cliquer sur Next

image

 

Donner le nom du Switch virtuel et cliquer sur Next.

image

 

Cliquer sur Next

 

image

 

Sélectionner Team et cliquer sur Add

image

Sélectionner le Port Profile précédemment créé et cliquer sur Ok.

image

Cliquer sur Next

image

Dans l’onglet Virtual Port, cliquer sur Add

image

Sélectionner les virtuals ports comme sur l’exemple ci dessous via le bouton Add.

(Ces virtuals ports sont nativement présent dans VMM et détiennent des Bandwidth Weight qui définiront notre QOS)

image

 

image

image

 

Cliquer sur Next

image

 

Cliquer sur Finish

image

 

Nous allons maintenant affecter à notre hyperviseur le Switch Logique précédemment créé.

Sélectionner votre Hôte et afficher ses propriétés.

image

 

Aller dans l’onglet Virtual Switches

image

Sélectionner New Logical Switch

image

 

Ici sélectionner les différentes interfaces réseaux devant participer à la configuration de votre Switch.

image

 

Nous allons maintenant ajouter 3 VNICs pour notre exemple qui permettront d’avoir des VNICs nécessaire pour notre cluster Hyper-V :

  • VNIC Cluster
  • VNIC Live Migration
  • VNIC Management

Cliquer sur New Virtual Network Adapter de manière à ajouter des VNICs

image

Procéder à la configuration de votre VNIC

image

Procéder de même pour les autres VNICs et cliquer sur OK.

image

 

Un message apparait. Cliquer sur OK

image

 

Votre Hyperviseur applique la configuration de votre Switch Convergé poussé depuis VMM.

Nos 3 VNICs sont maintenant apparue sur notre Hyperviseur.

image

 

Ces 3 VNICs détiennent également les configurations réseaux qui ont été appliqués.

image

Récupération des binaires d’installation de Windows Azure Pack installation Express en Local

 

Tout d’abord récupérer l’exécutable Microsoft Web Platform Installer disponible ici :

https://go.microsoft.com/?linkid=9737537

Procéder ensuite à son installation.

Une fois installé, ouvrez une fenêtre PowerShell.

Taper : cd 'C:\Program Files\Microsoft\Web Platform Installer'

Taper ensuite :

.\WebpiCmd.exe /offline  /Products:"WAP_SingleMachineInstallation" 
/Path:"C:\WAP_Offline"
/XML:
https://www.microsoft.com/web/webpi/5.0/webproductlist.xml
/Log:"C:\WAP_Offline.log

(si vous souhaiter récupérer les binaires de WAP dans une version antérieure, le XML référencé doit être modifié. Par exemple pour récupérer la version 4.6, le commutateur /XML aura pour valeur : https://www.microsoft.com/web/webpi/4.6/webproductlist.xml )

 

La récupération des binaires s’exécutent

image

Et se finit.

image

Notre répertoire de destination contient désormais l’ensemble des binaires nécessaire pour l’installation de WAP en offline.

image

Windows Azure Pack – VM Template non visible

Lorsque vous configurez votre plan dans WAP, vous n’arrivez pas à récupérer vos VM templates publiés dans VMM.

 

Dans notre exemple nous avons dans VMM 2 templates

    • 2012
    • 2012 R2

image

Dans la configuration de notre plan, nous voulons affecter le Template 2012 R2. Mais celui ci n’est pas visible.

image

 

image

 

Pour que WAP puisse publier des VM Templates dans un plan, il faut affecter un Operating System dans l’onglet OS Configuration ==> Operating System des propriétés des VM Templates.

 

Les propriétés actuelle de notre VM Template 2012 R2 sont tel quel :

image

On peut voir que l’onglet OS Configuration n’est pas présent.

Lors de la création de votre VM Template, dans l’onglet Configure Operating Systems, il ne faut pas sélectionner l’option None qui ne permettra pas de classifier notre Template et ne sera donc pas affiché dans le plan configuré dans WAP.

Sélectionner donc Create new  [Windows ou Linux dépendant de votre OS]

image

Sélectionner la version de votre OS

image

Maintenant que votre Template a été classifié, si vous retournez dans la configuration de votre plan dans WAP.

image

 

Votre Template est maintenant disponible. 

Création d’un Virtual Switch Hyper-V de type réseaux convergé en Powershell

 

Ici, nous allons voir comment créer un Switch virtuel Hyper-V de type convergé.

Sur un unique Switch virtuel Hyper-V, nous allons ici créer plusieurs Management OS qui permettront de séparer de façon logique via différences vNICs, des réseaux de type Live Migration, Cluster, Management ou autres.

image

 

Dans notre exemple, nous créons tout d'abord le switch virtuel Hyper-V.

New-VMSwitch "SwitchVirtuel" -MinimumBandwidthMode weight -NetAdapterName "NICsTeam" –AllowManagement $false

image

Nous allons maintenant ajouter 3 vNICs.

vNIC LiveMigration
Add-VMNetworkAdapter -ManagementOS -Name "LiveMigration" -SwitchName "SwitchVirtuel"


vNIC Cluster
Add-VMNetworkAdapter -ManagementOS -Name "Cluster" -SwitchName "SwitchVirtuel"


vNIC Management
Add-VMNetworkAdapter -ManagementOS -Name "Management" -SwitchName "SwitchVirtuel"

Dans l’affichage des cartes réseaux, trois nouvelles interfaces virtuelles sont apparues :

image

 

Maintenant afin de contrôler les différents flux réseaux véhiculés par ces interfaces, nous pouvons appliquer à chacune d’entre elle une politique de QOS.

QOS vNIC LiveMigration
Set-VMNetworkAdapter -ManagementOS -Name "LiveMigration" -MinimumBandwidthWeight 20

QOS vNIC Cluster
Set-VMNetworkAdapter -ManagementOS -Name "Cluster" -MinimumBandwidthWeight 30

QOS vNIC Management
Set-VMNetworkAdapter -ManagementOS -Name "Management" -MinimumBandwidthWeight 50

Remarque : la somme des Weights ici appliqués est de 100. (Ceci est hautement recommandé mais non requis d’avoir une somme à 100).

A l’aide de la commande Get-VMNetworkAdapter –ManagementOS vous pouvez voir les différentes vNICs créés. (non visible depuis l’interface graphique Hyper-V).

image

Configuration du Live Migration Settings dans un cluster en Powershell

 

Depuis la console de gestion Failover Cluster Manager, il est facile de sélectionner les réseau devant être utilisé par le Live Migration.

Allez sur Network ==> clique droit Live Migration Settings

image

 

Et il ne vous reste plus qu’a sélectionner les interfaces réseaux souhaitées.

image

 

Maintenant pour effectuer la même opération en Powershell, veuillez taper:

Get-ClusterResourceType -Name "Virtual Machine" | Set-ClusterParameter -Name MigrationExcludeNetworks -Value ([String]::Join(";",(Get-ClusterNetwork | Where-Object {$_.Name -notmatch "LM" -and $_.Name -notmatch "VN -"}).ID))   

Dans le filtre de la commande:

Where-Object {$_.Name -notmatch "XXX" -and $_.Name -notmatch "XXX"}).ID))

Veuiller taper comme valeurs pour les XXX une partie de la chaine de caractère du nom matchant vos interfaces réseaux afin de les identifier.