我正在尝试导入带有服务名称的文本文件,启动处于“已停止”状态的服务,然后将结果输出到文本文件。导入和启动服务不是问题。但是,在最终的文本文件中,我想区分具有Started状态的服务。
最后,我想要一个包含以下服务列表的文本文件:
我的想法是导入文本文件,检查状态并将其输出到新的文本文件。然后我会通过脚本更改Stopped to Started。但是,我不能总是保证服务启动,所以这将是一个快速而肮脏的方法。
有没有办法区分这两者?
答案 0 :(得分: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