Test per Localhost in Powershell?


8

Ho uno script PowerShell che le chiamate Get-WmiObjectcon -Credential. Tuttavia, questo errore si verifica se lo sto eseguendo sul computer locale:

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

Qual è il modo corretto di aggiungere una logica if localhost per evitare questo errore? O c'è un modo migliore?


Come stai passando il parametro nomecomputer?
Christopher,

@Christopher: tramite IP (10.xxx), non hai molto controllo su di esso mentre un'applicazione lo esegue.
Kyle Brandt,

Risposte:


3

Puoi sempre interrogare l'IP locale tramite WMI e archiviarlo in $ localIP e quindi confrontarlo con qualsiasi indirizzo sia attualmente nella tua pipeline o matrice:

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

2

Se lo avvolgi in un blocco catch di prova con erroraction stop al primo comando, intercetterà l'errore ed eseguirà il blocco catch senza credenziali.

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

PS mi consente di rilevare una particolare eccezione per l'errore che sto riscontrando?
Kyle Brandt,

Se conosci la classe di eccezione .NET puoi farlo in questo modo ... cattura [System.Net.SomeWMIExceptionClass] {il codice va qui}
Christopher

Ho sbagliato. Per questa domanda stackoverflow.com/questions/3097785/… e alcuni test che ho fatto, PowerShell racchiude l'eccezione in modo da non poter rilevare errori specifici.
Christopher,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.