Kiểm tra Localhost trong Powershell?


8

Tôi có một kịch bản powershell mà gọi Get-WmiObjectvới -Credential. Tuy nhiên, lỗi này xảy ra nếu tôi chạy nó với máy cục bộ:

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

Cách thích hợp để thêm logic if localhost để tránh lỗi này là gì? đây có phải là cách tốt hơn không?


Làm thế nào bạn vượt qua trong tham số máy tính?
Christopher

@Christopher: Theo IP (10.xxx), không có nhiều quyền kiểm soát đối với điều đó khi một ứng dụng chạy nó.
Kyle Brandt

Câu trả lời:


3

Bạn luôn có thể truy vấn IP cục bộ thông qua WMI và lưu trữ nó trong $ localIP và sau đó khớp với bất kỳ địa chỉ nào hiện đang có trong đường dẫn hoặc mảng của bạn:

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

2

Nếu bạn bọc nó trong một khối thử bắt với lỗi dừng ở lệnh đầu tiên, nó sẽ bẫy lỗi và chạy khối bắt mà không có thông tin xác thực.

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

PS có cho phép tôi bắt một Ngoại lệ cụ thể cho lỗi tôi đang gặp phải không?
Kyle Brandt

Nếu bạn biết lớp .NET Exception, bạn có thể làm như thế này ... bắt [System.Net.SomeWMIExceptionClass] {code vào đây}
Christopher

Tôi sai. Với câu hỏi này stackoverflow.com/questions/3097785/ và một số thử nghiệm tôi đã làm, PowerShell kết thúc ngoại lệ để bạn không thể bắt lỗi cụ thể.
Christopher
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.