我有一个脚本可以从计算机列表中检索某些事件日志条目。我在使用Get-EventLog -Computername $ c ...的计算机列表上使用foreach循环来获取事件。我使用Test-Connection MyComputer -Quiet来确保每台计算机都启动。如果启用远程处理,我无法弄清楚如何以编程方式进行测试。我试过了
if(!(Test-WSMan MyComputer))
仍然会尝试连接到Remoting以测试是否已启用远程处理时出错。看起来像Catch-22。您只能通过连接到Remoting来测试是否启用了远程处理,如果未启用远程处理则会出现错误。
我也尝试将它包装在Try ... Catch中,但是没有发现错误。
有没有办法在脚本中检查计算机是否有Remoting可用?
注意:我在安装PowerShell的任何地方都运行PowerShell 4.0。
答案 0 :(得分:1)
您可以使用此功能:
Function Test-PSRemoting
{
Param($Computer)
$ErrorActionPreference = "Stop"
Try
{
if ((Invoke-Command -ComputerName $Computer -ScriptBlock {1}) -eq "1")
{
return $true
}
else
{
return $false
}
}
Catch
{
return $false
}
}
像这样使用:
Test-PSRemoting ComputerName
True
答案 1 :(得分:0)
如果您只想要取消错误消息,那么-ErrorAction SilentlyContinue
就足够了:
if (!(Test-WSMan MyComputer -ErrorAction SilentlyContinue))
如果您不想将错误添加到-ErrorAction Ignore
自动变量,则可以使用$Error
。