为什么这样做:
$bits = Get-WmiObject -Class win32_service -ComputerName computer -Credential $creds |
? name -Like "bits*"
$bits.StopService()
但是有了这个
$bits = Get-WmiObject -Class win32_service -ComputerName computer -Credential $creds |
? name -Like "bits*"
$stopbits = Start-Job {$bits.StopService()}
我收到错误“你无法在空值表达式上调用方法”
我正在尝试编写一个脚本,它将按设定的顺序停止一组服务。我只有WMI可供我使用。通过使用Start-Job我想使用
$stopbits = Start-Job {$bits.StopService()}
Wait-Job -Id $stopbits.id
在进入下一个服务之前。我是一名知识渊博的初学者,所以我可能会把这一切都搞错了。我很感激任何帮助让这个工作。谢谢!
答案 0 :(得分:0)
您需要调用名为StopService的WMI方法来执行作业。 这样的事情。
$stopbits = Start-Job {$bits.InvokeMethod("StopService",$null)}
再想一想,上面的代码也不会起作用,因为$ bits对象没有在本地范围内定义。 所以你需要这样做。
$global:creds = Get-credential
$stopbits = Start-Job {
$bits = Get-WmiObject -Class win32_service -ComputerName $computer -Credential $global:creds | ? name -Like "bits*"
$bits.StopService()
}
答案 1 :(得分:0)
$ bits变量未在后台作业的范围内定义。