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?

Kyle Brandt
la source
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 }
MDMarra
la source
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
}
Christophe
la source
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