Question Rechercher des Localhost à Powershell?


J'ai un script PowerShell qui appelle Get-WmiObject avec -Credential. Cependant, cette erreur se produit si je l'exécute sur la machine locale:

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

Quelle est la manière appropriée d'ajouter une logique if localhost pour éviter cette erreur? Ou y a-t-il un meilleur moyen?


8
2017-08-09 20:03


origine


Comment passez-vous dans le paramètre nom_ordinateur? - Christopher
@Christopher: Par IP (10.x.x.x), vous n'avez pas beaucoup de contrôle sur cela lorsqu'une application l'exécute. - Kyle Brandt♦


Réponses:


Vous pouvez toujours interroger l'adresse IP locale via WMI et la stocker dans $ localIP, puis la comparer à l'adresse suivante de votre pipeline ou de votre tableau:

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

3
2017-08-09 20:36





Si vous l'enroulez dans un bloc catch try 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
}

2
2017-08-09 20:58



Est-ce que PS me permet d'attraper une exception particulière pour l'erreur que je reçois? - Kyle Brandt♦
Si vous connaissez la classe d'exception .NET, vous pouvez le faire comme ceci ... catch [System.Net.SomeWMIExceptionClass] {le code va ici} - Christopher
Je me trompe. Par cette question stackoverflow.com/questions/3097785/… et quelques tests que j'ai faits, PowerShell encapsule l'exception afin que vous ne puissiez pas détecter les erreurs spécifiques. - Christopher