samedi 23 juillet 2011

Désactiver l'accélération hardware d'Internet Explorer 9 via GPO

Si l'accélération hardware d'Internet Explorer 9 (exploitation du calculateur graphique ou GPU) est efficace sur un poste de travail récent, elle peut générer des problèmes sur des postes de travail plus anciens ou pire, créer des latences sur un serveur RDS (Remote Desktop Services ou anciennement TSE) : Page d'accueil qui s'affiche plus d'une minute après son lancement, bug d'affichage au niveau des onglets etc...

Malheureusement, il n'existe pas de stratégie de groupe (ou GPO) pour désactiver ce comportement.
Toutefois, il est possible d'exploiter les Paramètres des stratégies de groupe (disponibles à partir de Windows 2008 Server) afin d'inscrire une clef dans la base de registre, coté utilisateur, pour forcer le mode software.

Ouvrez donc la console Gestion des stratégies de groupe, créez ou ouvrez un objet de stratégie de groupe et rendez-vous là :


Faites un clic-droit sur Registre : Nouveau / Élément registre et renseignez les informations suivantes :


Action : Remplacer, permet de créer ou mettre à jour la valeur si elle existe déjà.
Ruche : HKEY_CURRENT_USER
Chemin d'accès à la clef : Software\Microsoft\Internet Explorer\Main
Nom de la valeur : UseSWRender (utiliser le rendu logiciel)
Type de valeur : REG_DWORD
Donnée de la valeur : 1
Base : Décimal

Liez cette objet de stratégie de groupe sur une Unité d'Organisation où se trouve votre utilisateur de test et ouvrez une session. Vérifiez dans IE9 / Options Internet, onglet Avancé que la case Utiliser le rendu logiciel au lieu du rendu GPU est bien cochée :


Si elle ne l'est pas encore, ouvrez une console cmd en tant qu'administrateur et rafraichissez l'application des stratégies :

GpUpdate /Target:User /Force /Sync (attention, demande la fermeture de la session)

Une fois le rafraichissement effectué, vous devriez constater la désactivation de l'accélération GPU d'Internet Explorer 9.

mardi 19 juillet 2011

PowerCLI : Découverte de l'administration PowerShell sous ESXi

Note du 05/05/2012 : Quelques corrections, modif de PowerShell V2 pour NT5.

Pour administrer ses serveurs ESX / ESXi, VMware fournit le client vSphere.
 
S'il est sympathique - et efficace - au premier abord, on se rends rapidement compte de ses limitations lorsque l'on commence à avoir beaucoup de machine virtuelle et que des tâches répétitives d'administration sont nécessaires.

Heureusement, pour palier à ce problème VMware fournit le client PowerCLI, qui permet d'administrer les serveurs et les machines virtuelles en exploitant la possibilités de PowerShell.

Je vais vous présenter PowerCLI en quelques mots et vous montrer comment gagner du temps en utilisant PowerCLI sur votre infrastructure de virtualisation.

Prérequis et Installation

    Votre poste de travail doit posséder PowerShell, déjà présent en version 2 sur les NT6 (Vista,7, 2008 etc.), mais à installer sur les NT5 (XP, 2003 etc.).

    Ensuite vous devez installer le client PowerCLI, disponible sur le site de VMware : http://www.vmware.com/support/developer/PowerCLI/index.html



    Avant de lancer PowerCLI, vous devez autoriser PowerShell à exécuter des scripts non signés. Pour cela lancez une instance PowerShell et tapez :

    Set-ExecutionPolicy RemoteSigned

    Cette commande modifie le profil global de PowerShell (pour tous les utilisateurs PowerShell du poste de travail), son comportement sera alors le suivant :

    • Les scripts exécutés localement peuvent être exécutés sans être signés
    • Les scripts téléchargés à partir d’internet doivent être signés
    • Ne demande pas de confirmation avant d’exécuter des scripts signés ou non par une autorité de certification connue de votre ordinateur
    Lancement du client

    Vous pouvez lancer le client PowerCLI directement en cliquant sur son icône. Pour débuter ça reste pratique d'utiliser directement la console PowerCLI, mais le plus agréable reste d'utiliser l'ISE de PowerShell v2 et d'initialiser les modules PowerCLI avec les commandes suivantes :

    PS> Add-PSSnapin VMware.VimAutomation.Core
    PS> Initialize-VIToolkitEnvironment.ps1

    Ces lignes chargent le module VMware et initialisent son environnement d'administration : il est nécessaire de les taper pour pouvoir exploiter pleinement ses serveurs ESXi. Toutefois, vous pouvez créer un alias dans votre profil PowerShell (plus d'information sur les alias ici ) ou, en intégrant directement ses commandes dans votre profil, les charger automatiquement.

    Une fois votre console lancée en PowerCLI, vous devez maintenant vous connecter à un serveur ESX. Voici la commande de connexion :

    PS> Connect-VIServer IP_ou_DNS

    Il est possible de fournir beaucoup plus d'informations :

    PS> Connect-VIServer -Server IP_ou_DNS -Protocol https -User admin -Password pass

    Les informations manquantes seront demandées de manière interactive.

    PowerCLI respecte bien l'architecture PowerShell, c'est à dire un format verbe-nom -commutateurs globaux (name, destination etc.).

    Un simple get-help vm vous sort toutes les commandes d'administration des machines virtuelles, les possibilités sont étourdissante.

    Quelques commandes de base :

    Récupérer des infos sur une VM :

    PS> Get-VM -Name "Vm-Name"

    Récupérer la liste des VM d'un centre :

    PS> Get-VM -Location Nancy

    Arrêter brutalement une VM :

    PS> Stop-VM -VM "VM-Name"

    Arrêter une VM contenant les VMWare Tools proprement :

    PS> Shutdown-VMGuest -VM "VM-Name"

    Démarrer une VM :

    PS> Start-VM -VM "VM-Name"

    Mettre en pause une VM :

    PS> Suspend-VM -VM "VM-Name"

    Supprimer une VM de l'inventaire

    PS> Remove-VM -VM "VM-Name"

    Redémarrer une VM contenant les VMWare Tools proprement :

    PS> Restart-VMGuest -VM "VM-Name"

    Supprimer une VM de l'inventaire ET du datastore

    PS> Remove-VM -VM "VM-Name" -DeletePermanently

    L'idée maintenant, c'est de "piper" ces différentes commandes afin d'exécuter des tâches lourdes en quelques lignes.

    Quelques commandes cooool

    Déconnecter toutes les images ISO montées dans les VM :


    PS> Get-cddrive -VM * | Where {$_.ISOPATH -ne $null} | set-cddrive -nomedia

    Mettre en pause toutes les VM actives sur un cluster :

    PS> get-vm -location cluster_ou_serveur | where {$_.PowerState -eq "PoweredOn"} | suspend-vm

    Démarrer les VM en pause:

    PS> get-vm -location cluster_ou_serveur| where {$_.PowerState -eq "Suspended"} | Start-vm

    Déplacer l'ensemble des machines virtuelles d'un serveur à un autre :

    PS> get-vm -location serveur_1 | move-vm -destination serveur_2

    Pour déplacer toutes les VM allumées :

    PS> get-vm -location serveur_1 | where {$_.PowerState -eq "PoweredOn"} | move-vm -destination serveur_2

    Migration de Datastore (d'un stockage à un autre) :

    PS> get-vm -location cluster_ou_serveur | move-vm -Datastore nom_datastore

    Pour aller plus loin :

    Documentation et téléchargement PowerCLI : http://www.vmware.com/support/developer/PowerCLI/index.html

    Une référence FR sur PowerShell : http://www.powershell-scripting.com/

    Initiation PowerShell sur le MSDN : http://msdn.microsoft.com/fr-fr/visualc/bb906067

    Explication sur les profiles PowerShell : http://www.winmgr.com/?p=1645

    QuickStart pour PowerCLI 4.1.1 : http://communities.vmware.com/servlet/JiveServlet/download/1696554-55551/Final-PowerCLI-4.1.1.pdf

    N'hésitez pas si vous avez des questions ou des commandes sympa à partager.
    Je rajouterai mes prochaines découvertes dans un second billet.