0

我正在尝试导入具有服务名称的文本文件,启动处于已停止状态的服务,然后将结果输出到文本文件。导入和启动服务不是问题。但是,在最终文本文件中,我想区分开始状态为 Started 的服务。

最后,我想要一个包含服务列表的文本文件:

  • 服务 1 由脚本启动
  • 服务 2 开始
  • 服务 3 等等...

我的想法是导入文本文件,检查状态并将其输出到新的文本文件。然后我会将 Stopped 更改为 Started by script。但是,我不能总是保证服务会启动,所以这将是一种快速而肮脏的方法。

有没有办法区分这两者?

4

1 回答 1

1

我将使用Get-Service从列表中检索服务并添加自定义属性来指示服务是否由脚本启动:

$f = 'C:\services.txt'
$svc = Get-Content $f | Get-Service | % {
  $_ | Add-Member 'StartedByScript' $false
  $_
}

如果您想跳过不存在的服务而不显示错误消息,请添加-ErrorAction SilentlyContinue到。Get-Service

使用该服务列表,您可以在如下状态下启动服务Stopped

$svc | ? { $_.Status -eq 'Stopped' } | % {
  $_.Start 
  $_.StartedByScript = $true
}

自定义属性StartedByScript指示脚本启动了哪个服务:

$svc | select DisplayName, Status, StartedByScript
于 2013-09-08T17:33:23.757 回答