Test pour Localhost à Powershell?


8

J'ai un script PowerShell qui appelle Get-WmiObjectavec -Credential. Cependant, cela génère des erreurs si je l'exécute sur la machine locale:

Get-WmiObject : User credentials cannot be used for local connections

Quelle est la bonne façon d'ajouter une logique if localhost pour éviter cette erreur? Ou existe-t-il une meilleure façon?


Comment passez-vous le paramètre computername?
Christopher

@Christopher: Par IP (10.xxx), vous n'avez pas beaucoup de contrôle sur cela lorsqu'une application l'exécute.
Kyle Brandt

Réponses:


3

Vous pouvez toujours interroger l'IP locale via WMI et la stocker dans $ localIP, puis la faire correspondre à l'adresse qui est actuellement la suivante dans votre pipeline ou votre tableau:

if ($localIP -eq $otherIP) { get-wmiobject without -credential }    
else { existing query }

2

Si vous l'enveloppez dans un bloc try catch avec erroraction stop sur la première commande, il interceptera l'erreur et exécutera le bloc catch sans informations d'identification.

Try
{
Get-WmiObject -Credential domain\user -ComputerName localhost -class Win32_BIOS -erroraction Stop
}
Catch
{
Get-WmiObject -ComputerName localhost -class Win32_BIOS
}

PS me permet-il d'attraper une exception particulière pour l'erreur que j'obtiens?
Kyle Brandt

Si vous connaissez la classe d'exception .NET, vous pouvez le faire comme ceci ... catch [System.Net.SomeWMIExceptionClass] {code va ici}
Christopher

Je me trompe. Par cette question stackoverflow.com/questions/3097785/… et certains tests que j'ai faits, PowerShell encapsule l'exception afin que vous ne puissiez pas détecter des erreurs spécifiques.
Christopher
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.