Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 区分服务状态_Powershell_Powershell 2.0_Powershell 3.0 - Fatal编程技术网

Powershell 区分服务状态

Powershell 区分服务状态,powershell,powershell-2.0,powershell-3.0,Powershell,Powershell 2.0,Powershell 3.0,我试图导入一个带有服务名称的文本文件,启动处于停止状态的服务,然后将结果输出到文本文件。导入和启动服务不是问题。但是,在最后一个文本文件中,我想区分以Started状态开始的服务 最后,我想要一个包含服务列表的文本文件,其中包含: 服务1已由脚本启动 服务2已启动 服务3等等 我的想法是导入文本文件,检查状态并将其输出到新的文本文件。然后我会将“停止”更改为“按脚本启动”。但是,我不能总是保证服务启动,所以这将是一个快速而肮脏的方法 有没有办法区分这两种服务?我会使用获取服务从列表中检索服务

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

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

  • 服务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

这样做你想解决什么问题?服务由操作系统管理,具有启动模式“自动”的服务应自动启动。如果他们不这样做,通常你应该调查一个问题。不要试图实施自己的服务管理。我想更多的是一种概念验证型的交易。。。