在Powershell中测试Localhost?


8

我有一个PowerShell脚本的呼叫Get-WmiObject使用-Credential。但是,如果我在本地计算机上运行它,则会出现此错误:

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

添加if本地主机逻辑以避免此错误的正确方法是什么?或者,还有更好的方法?


您如何传递computername参数?
Christopher

@Christopher:通过IP(10.xxx),在应用程序运行它时对此没有太多控制权。
凯尔·布​​兰特

Answers:


3

您总是可以通过WMI查询本地IP,并将其存储在$ localIP中,然后将其与管道或数组中当前位于下一个的任何地址进行匹配:

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

2

如果将其包装在try catch块中,并且在第一个命令上执行erroraction stop,它将捕获错误并在没有凭据的情况下运行catch块。

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

PS是否允许我针对所收到的错误捕获特定的异常?
凯尔·布​​兰特

如果您知道.NET异常类,则可以这样操作... catch [System.Net.SomeWMIExceptionClass] {代码在此处}
Christopher

我错了。根据这个问题stackoverflow.com/questions/3097785/…和我进行的一些测试,PowerShell封装了该异常,因此您无法捕获特定的错误。
Christopher
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.