Powershell 区分服务状态
我试图导入一个带有服务名称的文本文件,启动处于停止状态的服务,然后将结果输出到文本文件。导入和启动服务不是问题。但是,在最后一个文本文件中,我想区分以Started状态开始的服务 最后,我想要一个包含服务列表的文本文件,其中包含:Powershell 区分服务状态,powershell,powershell-2.0,powershell-3.0,Powershell,Powershell 2.0,Powershell 3.0,我试图导入一个带有服务名称的文本文件,启动处于停止状态的服务,然后将结果输出到文本文件。导入和启动服务不是问题。但是,在最后一个文本文件中,我想区分以Started状态开始的服务 最后,我想要一个包含服务列表的文本文件,其中包含: 服务1已由脚本启动 服务2已启动 服务3等等 我的想法是导入文本文件,检查状态并将其输出到新的文本文件。然后我会将“停止”更改为“按脚本启动”。但是,我不能总是保证服务启动,所以这将是一个快速而肮脏的方法 有没有办法区分这两种服务?我会使用获取服务从列表中检索服务
- 服务1已由脚本启动
- 服务2已启动
- 服务3等等
有没有办法区分这两种服务?我会使用
获取服务
从列表中检索服务,并添加一个自定义属性来指示服务是否由脚本启动:
$f = 'C:\services.txt'
$svc = Get-Content $f | Get-Service | % {
$_ | Add-Member 'StartedByScript' $false
$_
}
$svc | select DisplayName, Status, StartedByScript
如果要跳过不存在的服务而不显示错误消息,请将-ErrorAction SilentlyContinue
添加到获取服务
使用该服务列表,您可以在停止状态下启动服务,如下所示:
$svc | ? { $_.Status -eq 'Stopped' } | % {
$_.Start
$_.StartedByScript = $true
}
自定义属性StartedByScript
指示脚本启动了哪个服务:
$f = 'C:\services.txt'
$svc = Get-Content $f | Get-Service | % {
$_ | Add-Member 'StartedByScript' $false
$_
}
$svc | select DisplayName, Status, StartedByScript
这样做你想解决什么问题?服务由操作系统管理,具有启动模式“自动”的服务应自动启动。如果他们不这样做,通常你应该调查一个问题。不要试图实施自己的服务管理。我想更多的是一种概念验证型的交易。。。