Prueba para Localhost en Powershell?

8

Tengo un script de PowerShell que llama Get-WmiObjectcon -Credential. Sin embargo, esto produce errores si lo estoy ejecutando contra la máquina local:

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

¿Cuál es la forma correcta de agregar una lógica if localhost para evitar este error? ¿O hay un mejor camino?

Kyle Brandt
fuente
¿Cómo se pasa el parámetro computername?
Christopher
@ Christopher: Por IP (10.xxx), no tengo mucho control sobre eso cuando una aplicación lo ejecuta.
Kyle Brandt

Respuestas:

3

Siempre puede consultar la IP local a través de WMI y almacenarla en $ localIP y luego compararla con cualquier dirección que esté actualmente en su canalización o matriz:

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

Si lo envuelve en un bloque try catch con erroraction stop en el primer comando, atrapará el error y ejecutará el bloque catch sin credenciales.

Try
{
Get-WmiObject -Credential domain\user -ComputerName localhost -class Win32_BIOS -erroraction Stop
}
Catch
{
Get-WmiObject -ComputerName localhost -class Win32_BIOS
}
Christopher
fuente
¿PS me permite detectar una excepción particular por el error que estoy recibiendo?
Kyle Brandt
Si conoce la clase de excepción .NET, puede hacerlo así ... catch [System.Net.SomeWMIExceptionClass] {el código va aquí}
Christopher
Estoy equivocado. Según esta pregunta stackoverflow.com/questions/3097785/… y algunas pruebas que hice, PowerShell envuelve la excepción para que no pueda detectar errores específicos.
Christopher