提问人:Keith 提问时间:6/9/2022 更新时间:6/13/2022 访问量:48
powershell - 如何在远程脚本块中使用错误,以便调用范围看不到它
powershell - how can I consume an error in remote script block so calling scope doesnt see it
问:
我在服务器上有一个 ps 脚本,它使用 invoke-command 调用其域上的各种服务器/客户端,并通过它在被调用计算机上使用的 COM 对象传递脚本以远程运行某些作业。 在其中一台服务器上,由于那里的作业原来是本地作业,因此当实例化 com 对象时,它没有属性 myComObject.NetworkUser。
代码就是这样有效的
$NetworkUser = $comobject.NetworkUser
如果作业位于本地有效运行的服务器上,则会出现错误
“在此对象上找不到属性'NetworkUser'。验证该属性是否存在”
然后,这最终会返回到调用脚本范围并注册为错误。
我试图通过事先检查NetworkUser属性是否存在来阻止错误
if($null -eq $comobject.NetworkUser)
{
#dont try and assign it to anything
}
else
{
#use the value and go ahead and do the job
}
但这仍然会引发错误。
如果 NetworkUser 属性不存在,我只想退出远程调用的脚本(因为不需要运行作业)并返回到调用范围,而不会显示/传回任何错误。
我该怎么做?
非常感谢
答:
0赞
Albus Şeyda Eren
6/9/2022
#1
您是否将变量传递给远程服务器?这似乎是这里的原因。
评论
0赞
Keith
6/13/2022
#2
最后,我找到了一种不出现错误的方法,即在调用属性之前使用此样式检查属性是否存在
$myComObject= New-Object -ComObject 'comObjectofInterest'
if([bool]($myComObject.PSobject.Properties.Name -match 'NetworkUser))
{
#Use the property
}
评论