Powershell 6.2 和 Get-CimInstance 远程 stop/start/restart 服务问题

Powershell 6.2 and Get-CimInstance to remotely stop/start/restart service issues

所以我现在遇到了很大的障碍。我当时在 PowerShell 5.1 中工作,并且 Get-WmiObjectWin32_Service Class 可以完美地远程远程 stop/start/restart 服务。但是,我发现 .StopService() 方法已在 PowerShell 6 中删除(我用它来绕过我保留 运行 的依赖项问题)。同样,我发现 -ComputerName 变量也已从许多不同的命令行开关中删除。

自从从 Stop-Service commandlet 之类的东西中删除了 -ComputerName 后,我一直在努力弄清楚如何正确处理服务本身的停止。我可以毫无问题地检索我想要的服务。我似乎无法弄清楚如何处理停止服务。

尽可能详细。我知道我遗漏了一些非常小的东西,但我的所有 Google 搜索似乎 return PowerShell 5 的所有内容,但在 6 上却很少。

谢谢。

好吧,别管这个问题了。我决定以另一种方式进行 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