所以我现在处于一个很大的障碍。我正在使用PowerShell 5.1,并使Get-WmiObject
类与Win32_Service
类一起正常工作,可以远程停止/启动/重新启动服务。但是,我发现.StopService()
方法已在PowerShell 6中删除(我用它来绕过我一直遇到的依赖关系问题)。同样,我发现-ComputerName
变量也已从许多不同的Commandlet中删除。
自从-ComputerName
命令小程序中删除Stop-Service
以来,我一直在努力寻找如何正确处理停止服务本身的方法。我可以毫无问题地检索我想要的服务。我似乎无法弄清楚如何停止服务。
尝试尽可能详细。我知道我缺少的东西太小了,但是我所有的Google搜索似乎都可以使用PowerShell 5返回所有内容,但是在6上返回的内容很少。
谢谢。
答案 0 :(得分:1)
好吧,不要介意这个问题。我决定以另一种方式使用Google搜索,但偶然发现了所需的语法。对于那些想知道的人,您不能直接从返回的对象运行命令。因此,例如,您可以直接在该服务上直接执行“ $ service.StopService()”。但是,现在您必须通过执行“ Invoke-CimMethod -Name StopService”来调用该StopService方法,并且仅在将Get-CimInstance返回的对象传递给它之后。因此完整的语法看起来像这样。
get-ciminstance win32_service -filter "Name='spooler'" | Invoke-CimMethod -Name StartService
我发现一个非常好的网站可以解释并给出很好的示例,说明为什么Cim实例以及如何实现它们。
https://4sysops.com/archives/managing-services-the-powershell-way-part-7