【问题标题】:Powershell: How do I Start/Stop a Service and all RequiredServices that are not already running when started?Powershell:如何启动/停止服务以及启动时尚未运行的所有必需服务?
【发布时间】:2020-04-09 00:28:18
【问题描述】:

如何在几个 Powershell 单行中实现以下目标(一个启动,一个停止)?

我想在 Powershell 中启动服务 MyService 并启动 MyService 必需 的所有其他服务(即 >MyService 取决于尚未启动。然后我希望能够停止 MyService 以及我最初使用 MyService 启动的所有服务,但不是所有 other 上的 服务MyService 依赖于在我启动 MyService已经启动

澄清: 如果 MyService 需要 Service1Service2Service3 以及 Service3 也是 必需 UnrelatedService 并且已经为 UnrelatedService 运行,那么我不需要/不想启动 Service3 以启动 MyService我不想在停止 MyService 时停止 Service3,因为那样 UnrelatedService 会失败。我确实想在我停止 MyService 时停止 Service1Service2,因为它们只是必需的 em> 由 MyService 提供。

其次,我想递归地执行此操作,这样如果 Service1Service2 有其他 RequiredServices(回想 Service3 已经在运行,因此 Service3 Depends) 所依赖的服务也是如此,然后我还想启动 Service1所依赖的其他服务> 和 Service2 Depend 并且尚未启动

成功的结果是 [所有在其后运行的服务] 我停止 MyService 的列表与的列表相同[之前运行的所有服务] 我启动了 MyService 以及它所依赖的那些

我的尝试

Get-Service MyService | 
   Select -expand RequiredServices | 
   Start-Service 

Start-Service : 服务“我的完整服务名称 (myservice)”不能 由于以下错误而启动:无法启动服务 MyService on 电脑 '。'。在 line:1 char:57 + Get-Service MyService |选择 -扩大所需服务 | Start-Service + + CategoryInfo : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [启动服务],ServiceCommandException + FullyQualifiedErrorId : CouldNotStartService,Microsoft.PowerShell.Commands.StartServiceCommand

【问题讨论】:

  • 还有什么问题?您可以(重新)阅读帮助主题 How do I ask a good question?How to create a Minimal, Reproducible Example
  • @Olaf “如何在 Powershell 中执行此操作?” - 抱歉,如果这不明显。我对 Powershell 很陌生,所以我什至不知道如何创建一个示例,因此需要详细而准确的描述以及所需的结果......
  • 接下来的问题通常是:到目前为止,您尝试了什么?请分享您的代码并解释您遇到的问题或无法按预期工作的地方。 ;-)
  • PS C:\Users\username> Get-Service MyService | Select -expand RequiredServices | Start-Service Start-Service : Service 'My Full Service Name (myservice)' cannot be started due to the following error: Cannot start service MyService on computer '.'. At line:1 char:57 + Get-Service MyService | Select -expand RequiredServices | Start-Service + + CategoryInfo : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service], ServiceCommandException + FullyQualifiedErrorId : CouldNotStartService,Microsoft.PowerShell.Commands.StartServiceCommand
  • MyService 显然是一个占位符...

标签: powershell recursion service


【解决方案1】:

听起来你需要一个 Foreach-Object 语句。 IMO 您的管道只是无法将扩展的 RequiredServices 识别为“服务”对象。

Get-Service MyService | select -ExpandProperty RequiredServices | % {Start-Service $_.Name}

或更详细:

Get-Service MyService | Select-Object -ExpandProperty RequiredServices | ForEach-Object {Start-Service $_.Name}

在此之后您将开始您的服务:

Start-Service MyService

【讨论】:

  • 感谢您的输入,但上面的内容对我来说似乎不是递归的,并且似乎没有提供一种方法来在我完成后停止所有已启动的服务(但没有其他 RequiredServices) .
猜你喜欢
  • 2019-04-25
  • 1970-01-01
  • 2016-05-13
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
相关资源
最近更新 更多