| MFCOM & PowerShell |
|
|
|
| Written by Flo | |
| Friday, 09 July 2010 15:18 | |
|
Introduction au MFCOM avec PowerShell & CTP2
MFCOM & PowerShellLe Framework de gestion Windows, PowerShell est capable de solliciter des objets MFCOM, ce Framework permet d’optimiser, de faciliter la gestion et l’automatisation des taches d’administration au sein d’environnements Windows / Citrix La gestion des objets MFCOM permet ainsi de gérer et d’administrer vos fermes Citrix. Installation de l’environnementPour commencer le scripting PowerShell, vous devez installer le Framework PowerShell au minimum sur un serveur 2003/Citrix Xenapp.
Lien de téléchargement Powershell
Afin de créer ou d’éditer vos script, je vous suggère d’utiliser l’outil PowerGUI, il facilite l’écriture des scripts et permet un débogage immédiat.
Il existe un PowerPack Citrix avec des scripts de base facilitant la compréhension.
Il se peut que votre politique de sécurité vous empêche de tester les scripts via PowerGUI, il est possible de paramétrer cela dans une console PowerShell : Utilisation de l'objet MFCOM
Attaquons nous maintenant au vif du sujet, l’intégration de l'objet MFCOM.
L'exemple suivant va nous montrer comment instancier l'objet et afficher le nom de la ferme Citrix: $farm = new-Object -com "MetaframeCOM.MetaframeFarm" $farm.Initialize(1) $farm.FarmName
$farm = new-Object -com "MetaframeCOM.MetaframeFarm" $farm.Initialize(1) $farm.FarmName $farm.sessions | Format-Table UserName,AppName,SessionID
$farm = new-Object -com "MetaframeCOM.MetaframeFarm"
$farm.Initialize(1)
$farm.FarmName
$farm.sessions | Where-Object { $_.ClientHRes -eq 1024 } |
Format-Table UserName,ClientHRes
$farm = new-Object -com "MetaframeCOM.MetaframeFarm"
$farm.Initialize(1)
$farm.FarmName
$farm.sessions | Where-Object { $_.ClientHRes -ne 1024 } |
Format-Table UserName,ClientHRes
$farm = new-Object -com "MetaframeCOM.MetaframeFarm"
$farm.Initialize(1)
$farm.FarmName
$hres = Read-Host "Entrez une résolution horizontale"
$farm.sessions | Where-Object { $_.ClientHRes -eq $hres } |
Format-Table UserName,ClientHRes
CTP2 (XenApp Commands Technology Preview v2 )
CTP2 est une suite d’outils PowerShell permettant l’administration de vos fermes XenApp 5 (2003/2008). Installation de l’environnement
La version béta de CTP2 est disponible sur le site MyCitrix, une authentification est requise afin de pouvoir le télécharger.
Si par erreur, vous avez supprimé ce raccourci, il est possible de charger le snap-in citrix dans une console PowerShell normale : PS W:\> Add-PSSnapin Citrix.XenApp.Commands Utilisation de CTP2
Afin de mieux exploiter ce toolkit, voici comment récupérer la liste complète des fonctions : PS W:\> Get-Command -PSSnapin Citrix* | sort Noun, Verb | select name
Pour avoir plus d’info, il est possible d’énumérer un court résumé de la fonction ainsi que des exemples : PS W:\> get-help Get-XAFarm PS W:\> get-help Disconnect-xasession –examples
PS W:\> Get-XAFarm
PS W:\> Get-XASession | Format-Table AccountName,BrowserName,SessionID
PS W:\> Get-XASession –Full
Commande renvoyant la variable complète : PS W:\> Get-XASession -ServerName XENAPP1 –Full
Le but de PowerShell étant d’automatiser les taches, il est logique de tester : PS W:\> Get-XAServer | Get-XASession -ServerName $_.ServerName –Full
Ce qui nous renvoi un joli message :
$servers = get-xaserver
foreach ($server in $servers)
{
Write-host "Server: " $server.ServerName -fore yellow -nonewline
Get-XASession -ServerName $server.ServerName –Full | where
{$_.HorizontalResolution -eq '1024'} | format-table AccountName,HorizontalResolution
}
Get-XAApplication |Where-Object { $_.WindowType -ne "100%" -or
$_.ColorDepth -ne "TrueColor" } | Format-Table DisplayName,WindowType,ColorDepth
N’oubliez pas le switch –WhatIf, il permet de simuler une commande sans en faire les changements !
Puis Harmonisons !
$apps = Get-XAApplication | Where-Object { $_.WindowType -ne "100%" -or $_.ColorDepth -ne "TrueColor" }
foreach($BrowserName in $apps )
{
Set-XAApplication -whatif -BrowserName $BrowserName -WindowType "100%" -ColorDepth "TrueColor"
}
Il faudra attendre la version finale du produit pour pouvoir s’exprimer sur les réels bénéfices des cmdlets Citrix, celles-ci étant encore incomplètes et surtout point important, ne supportant pas le multifarm. Les scripts utilisent la ferme auquel est rattaché le serveur d’exécution, il est par contre possible d’exécuter un script à distance. Nous pouvons néanmoins concéder une simplicité d’utilisation accrue grâce au worklow orienté « task ». Une nouvelle voie est ouverte pour les administrateurs Citrix et je dois admettre être impatient de pouvoir utiliser ces outils en version finale. Il n’est pas recommandé d’utiliser ces outils dans un environnement de production, tout du moins pour une première utilisation, je recommande fortement de tester les scripts sur une ferme de test, plusieurs bugs ayant déjà été recensés. La démarche la plus raisonnable serait de commencer par convertir les scripts MFCOM vers des scripts PS/MFCOM (le sdk étant beaucoup plus stable à l’heure actuelle).
Note pour les développeurs .NET, les CTP ne pourront être utilisées sous .Net que par le biais d’un RunSpace (ce qui équivaut à simuler une session PowerShell).
Commentaires (1)
![]() Ecrivez un commentaire
|
|
| Last Updated on Friday, 09 July 2010 15:38 |




























Runspace rs = RunspaceFactory.CreateRunspace();
Pipeline pl = rs.CreatePipeline();
Command cmd = new Command("Get-XAApplication");
cmd.Parameters.Add("BrowserName", "test");
pl.Commands.Add(cmd);
pl.Invoke();
Methode 2:
Runspace rs = RunspaceFactory.CreateRunspace();
IEnumerable apps = rs.ExecuteCommand(
new GetXAApplicationByName {BrowserName = new[] {"test"} });