Windowsクライアント上のサービスの状態を確認する

PowerShell は素晴らしいスクリプトツールです。 時間の節約に役立つだけでなく、繰り返されるタスクを手動またはスケジュールされたタスクによって実行するための、より大きな柔軟性を提供します。 ほぼすべての Windows の役割と機能には PowerShell コマンドレットが付属しています。

Windows オペレーティング システムのコマンドレットはデフォルトで使用でき、複数のコンピューター上の特定の Windows サービスの状態をチェックする、Windows コンピューター上にインストールされているソフトウェアのリストをチェックする、Windows Server オペレーティング システム上にインストールされている役割や機能をチェックし収集するなど、運用タスクを実行するために使用することが可能です。Windows Server Tutorials

Windows 管理者が頻繁に行う作業の 1 つに、Exchange Server、SQL Server、Active Directory ドメイン コントローラーなどの重要な生産サーバーのサービスの状態を確認することが挙げられます。

SCCM や同様のツールを使用して、特定のマシン セットのサービスの状態に関するレポートを提供することはできますが、SCCM はサービスの状態をレポートする前に、すべてのターゲット コンピューター上で SCCM クライアントが動作していることを必要とします。 この記事で説明するPowerShellスクリプトを使用すると、単一または複数のWindowsコンピュータの特定のサービスの状態をすばやく簡単に確認できます。

単一のサービスの状態を確認する

リモート コンピューター上の特定のサービスの状態を確認したい場合、以下の PowerShell コマンドを実行します。

Get-WMIObject -Computer -Query "Select * From Win32_Service WHERE Name Like "%SomeServiceName%"

上記の PowerShell コマンドを実行すると、%SomeServiceName%パラメーターで指定した特定のサービスの状態を取得することができます。 このコマンドは、「-Computer」パラメーターで指定されたリモートコンピューターに接続します。 上記のコマンドを実行する前に、コンピュータ名とサービス名の両方を変更する必要がある場合があります。

複数のサービスの状態を確認する

ターゲットシステムで実行されているすべてのWindowsサービスの一覧を取得したい場合は、次のPowerShellコマンドを実行します:

Get-WMIObject Win32_Service -Computer | Where {$_.State -eq "Running"} | FT -Auto

上記のコマンドでは、「-Computer」パラメーターで指定したリモートコンピュータで実行中のすべてのWindowsサービスの一覧が出力され、PowerShellウィンドウにその出力が表示されます。 出力を CSV ファイルに保存したい場合は、「Export-CSV」を追加すると、このコマンドのようになります:

Get-WMIObject Win32_Service -Computer | Where {$_.State -eq "Running"} | FT -Auto | Export-CSV "C:TempServicesStatus.CSV"

複数のコンピューターで単一のサービスの状態を確認する

上記の PowerShell コマンドは、単一の Windows コンピューターから特定または複数のサービスの状態を取得できますが、単一のサービスの状態を複数の Windows コンピューターから確認したい場合は、次の PowerShell スクリプトが使用可能です。 Windowsコンピュータの名前を含むテキストファイルを作成し、スクリプト変数「$ServiceNameToCheck」に確認したいサービスを含めるように変更するだけです。

$ServiceNameToCheck ="SomeServiceName"
$ReportFile = "C:TempServiceStatus.CSV"
Remove-item $ReportFile -ErrorAction SilentlyContinue
$ThisSTR = "Computer Name, Service Status"
Add-Content $ReportFile $ThisSTR
$CompFile = "C:TempComputers.TXT"

Foreach ($ComputerName in Get-Content "$CompFile")
{
$Error.Clear()
Get-WMIObject -Computer $ComputerName -Query "Select * From Win32_Service WHERE Name Like "%$ServiceNameToCheck% AND {$_.State -eq "Running"}
IF ($Error.Count -ne 0)
{
$ThisSTR = $ComputerName+", Could Not Connect to Remote Computer or Service Not Running"
Add-Content $ReportFile $ThisSTR
}
else
{
$ThisSTR = $ComputerName+", Running"
Add-Content $ReportFile $ThisSTR
}
Write-Host "Service status was retrieved from the list of computers and the output was saved in $ReportFile"

上記のPowerShellスクリプトの実行が終了したら、次のようにします。 という名前のレポートファイルが作成されます。C:TempComputers.TXT” ファイルに記述されたすべてのコンピュータの “$ServiceNameToCheck” 変数で指定されたサービス名の状態を含む “C:Temp” フォルダーに “ServiceStatus.CSV” というレポートファイルが作成されます。

サービスの状態をレポートする前にコマンドが正常に実行されることをチェックすることに注意してください。 PowerShellスクリプトは、PowerShellコマンドレット「Get-WMIObject」を使用して、ターゲットコンピューターから特定のサービスのステータスを収集します。 Get-WMIObject がターゲットコンピューターに接続できない場合、またはサービスの状態を取得できない場合、レポートに「Could Not Connect to Remote Computer or Service Not Running」メッセージを返します。

Conclusion

単一または複数のリモート Windows コンピューターから、単一または複数のサービスの状態を非常に容易に取得することができます。 サービスの状態を含む Windows コンピューターのインベントリを収集するためのエンタープライズ ツールがありますが、これらの PowerShell コマンド/スクリプトが非常に便利なケースもあります、特に、複数の Windows コンピューターの特定のサービスの状態をすばやく確認する必要がある場合です。 専門は、ディレクトリサービス、Microsoft Azure、Failover Cluster、Hyper-V、System Center、Exchange Servers で、1994 年から Microsoft テクノロジーに携わってきました。 余暇には、様々なサイトにヒントや記事を書いたり、ADHealthProf.ITDynamicPacks.Netソリューションのヘルスパックに貢献したりして、人を助け、自分の知識の一部を共有することを好んでいます。 Nirmal は、.

Follow ServerWatch on Twitter and on Facebook

で連絡することができます。

コメントを残す

メールアドレスが公開されることはありません。