PowerShell 32 bits vs 64 bits

Mise en contexte

Vous avez un script PowerShell qui utilise des composantes 64 bits.  Tout va bien lorsque vous l’exécutez directement ou en ligne de commande.  Par contre, lorsque vous tentez d’exécuter le même script à partir d’un logiciel tiers ou d’un programme que vous développez en 32 bits, plus rien ne fonctionne.

Par exemple, vous tentez d’utiliser des commandes liées à un serveur Exchange et lorsque vous tentez de charger le module suivant : Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin

Vous obtenez l’erreur suivante :

Add-PSSnapin : The Windows PowerShell snap-in ‘Microsoft.Exchange.Management.PowerShell.Admin' is not installed on this computer.

Le snap-in est bien installé, malheureusement il ne fonctionne quand 64 bits.  Que faire si on ne peut obtenir ou compiler le programme en 64 bits?

Voici une solution qui consiste à ajouter quelques lignes de code à votre script afin de lancer l’exécution de PowerShell 64 bits.

If ( [IntPtr]::Size * 8 -ne 32 )
    {
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\PowerShell.exe -File $MyInvocation.MyCommand.Path
    }
Else
    {
# Your code here
    }

Source : http://www.madwithpowershell.com/2015/06/64-bit-vs-32-bit-powershell.html

Voilà, il suffit de mettre votre code d’origine à l’endroit indiqué.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *