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?


¿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 }

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
}

¿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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.