0

サービス名を含むテキスト ファイルをインポートし、停止状態のサービスを開始して、結果をテキスト ファイルに出力しようとしています。サービスのインポートと開始は問題ありませんでした。ただし、最終的なテキスト ファイルでは、開始状態のサービスを区別したいと考えています。

最後に、次のサービスのリストを含むテキスト ファイルが必要です。

  • サービス 1 スクリプトによって開始
  • サービス2開始
  • サービス 3 など...

私の考えは、テキスト ファイルをインポートし、状態を確認して、それを新しいテキスト ファイルに出力することでした。次に、Stopped を Started by script に変更します。ただし、サービスが開始されることを常に保証できるわけではないため、これは手っ取り早い汚い方法です。

これら2つを区別する方法はありますか?

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 に答える