Aujourd’hui, je travaille sur l’élaboration d’un article sur la technologie Virtual Desktop Infrastructure (VDI) de Microsoft. J’essaye d’aborder les différentes notions au travers de cas concrets. La technologie VDI est souvent mise en avant comme une méthode permettant la résolution des problèmes de compatibilités applicatives résultant de la migration vers un nouveau système d’exploitation. Une entreprise souhaitant par exemple migrer vers Windows 7 et disposant d’une application métier non compatible sur la nouvelle mouture de Microsoft, peut utiliser cette technologie pour accélérer la migration. Ainsi, l’entreprise peut rendre disponible l’application sur des machines virtuelles Windows XP au travers de la technologie VDI et migrer l’ensemble des postes de travail sur Windows 7. Dans le détail, Microsoft met en avant sa technologie VDI pour être utilisé avec Windows 7. Le prochain Service Pack du nouveau système d’exploitation apporte d’ailleurs des améliorations dédiées aux VDI. Alors quand on cherche des informations sur la mise en place de Microsoft VDI avec Windows XP, on ne trouve pas grand-chose. On suit bêtement la documentation dédiée à VDI et Windows 7 et on se heurte à des problèmes. En effet l’une des étapes importantes consiste à préparer les machines virtuelles en activant le bureau à distance, en ajoutant les groupes utilisateurs autorisés à se connecter ou en ajoutant les permissions sur le protocole RDP pour le serveur Remote Desktop Virtualization Host. Vous devez ajouter les permissions WINSTATION_QUERY, WINSTATION_LOGOFF, et WINSTATION_DISCONNECT sur chaque machine virtuelle.
Pour cela, on vous propose d’utiliser les 4 commandes vmic suivantes :
wmic /node:localhost RDPERMISSIONS where TerminalName="RDP-Tcp" CALL AddAccount "contoso\rdvh-srv$",1
wmic /node:localhost RDACCOUNT where "(TerminalName='RDP-Tcp' or TerminalName='Console') and AccountName='contoso\\rdvh-srv$'" CALL ModifyPermissions 0,1
wmic /node:localhost RDACCOUNT where "(TerminalName='RDP-Tcp' or TerminalName='Console') and AccountName='contoso\\rdvh-srv$'" CALL ModifyPermissions 2,1
wmic /node:localhost RDACCOUNT where "(TerminalName='RDP-Tcp' or TerminalName='Console') and AccountName='contoso\\rdvh-srv$'" CALL ModifyPermissions 9,1
Lorsqu’on tente d’utiliser ces commandes sur Windows XP, wmic s’installe et on retrouve des erreurs RDPPERMISSIONS – Alias not found et RDACCOUNT – Alias not found :
En cherchant une solution, je suis tombé sur un script vbs qui fonctionne assez bien et effectue la même chose que ces lignes de commande :
set objWMI = GetObject("winmgmts:\\.\root\cimv2")
set colItems = objWMI.ExecQuery("Select * from Win32_TSPermissionsSetting")
for each objItem in colItems
intRC = objItem.AddAccount("%DOMAIN%\%ACCOUNT%", 1)
if intRC then
WScript.Echo "Error adding " & strAccount & " to " & _
objItem.TerminalName
else
WScript.Echo "Successfully added " & strAccount & " to " & _
objItem.TerminalName
end if
next
set objWMI = GetObject("winmgmts:\\.\root\cimv2")
set colItems = objWMI.ExecQuery ("Select * from Win32_TSAccount Where AccountName='%DOMAIN%\\%ACCOUNT%'")
for each objItem in colItems
intRC = objItem.ModifyPermissions(0,True)
intRC = objItem.ModifyPermissions(2,True)
intRC = objItem.ModifyPermissions(9,True)
if intRC then
WScript.Echo "Error setting permissions for " & strAccount
else
WScript.Echo "Set permissions for " & strAccount
end if
next
Il suffit ainsi de remplacer %DOMAIN% par votre nom de domaine et %ACCOUNT% par le nom de la machine qui héberge le service Remote Desktop Virtualization Host.
Source du script : http://systemcenterideas.com/2009/09/configuring-windows-xp-in-microsoft-vdi/