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.