Tes untuk Localhost di Powershell?


8

Aku punya script PowerShell bahwa panggilan Get-WmiObjectdengan -Credential. Namun, ini kesalahan jika saya menjalankannya terhadap mesin lokal:

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

Apa cara yang tepat untuk menambahkan logika localhost untuk menghindari kesalahan ini? Atau ada cara yang lebih baik?


Bagaimana Anda menyampaikan dalam parameter nama pengguna?
Christopher

@Christopher: By IP (10.xxx), tidak memiliki banyak kendali atas aplikasi yang menjalankannya.
Kyle Brandt

Jawaban:


3

Anda selalu dapat menanyakan IP lokal melalui WMI dan menyimpannya dalam $ localIP dan kemudian mencocokkannya dengan alamat apa pun yang saat ini ada di pipeline atau array Anda:

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

2

Jika Anda membungkusnya dalam blok coba tangkap dengan berhenti erroraction pada perintah pertama, itu akan menjebak kesalahan dan menjalankan blok tangkap tanpa kredensial.

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

Apakah PS memungkinkan saya menangkap Pengecualian tertentu untuk kesalahan yang saya dapatkan?
Kyle Brandt

Jika Anda tahu kelas .NET Exception, Anda dapat melakukannya seperti ini ... catch [System.Net.SomeWMIExceptionClass] {code di sini}
Christopher

Saya salah. Per pertanyaan ini stackoverflow.com/questions/3097785/… dan beberapa pengujian yang saya lakukan, PowerShell membungkus pengecualian sehingga Anda tidak dapat menemukan kesalahan tertentu.
Christopher
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.