複数のサーバで指定したサービスの状態をチェックする

スポンサーリンク

はじめに

指定したサーバのサービス状態を確認するスクリプトです。サーバとサービスは複数指定することができます。サーバごとに共通のサービスをチェックする時に使用します。

サーバ名とサービス名の組み合わせでチェックしたい場合は以下をご覧下さい。
複数のサーバと指定したサービスのセットでサービスの状態をチェックする

環境

OS:Windows10
.Net Framework:4.7
PowerShellのバージョン:5.1.17134.858

ソースコード

ServiceCheck.ps1

#######################################################################################
# 概要:複数のサーバで指定したサービスの状態をチェックします
# 作成者:ITStudy
# 作成日:2020/02/11
# 必要なファイル:ServiceCheck.ps1(このファイルです)
#                 ServersList.csv(対象サーバを記載したCSVファイルです)
#                 ServicesList.csv(チェックするサービスを記載したCSVファイルです)
#######################################################################################

$CurrentDir      = $PSScriptRoot
$ServersList     = "ServersList.csv"
$ServicesList    = "ServicesList.csv"
$Report          = "Report-$(Get-Date -f yyyyMMdd).csv"
$aryServicesList = @()
$Result          = @()
$ErrorActionPreference = "SilentlyContinue"

try{
    #指定したサービスを配列に格納
    Import-Csv (Join-Path $CurrentDir $ServicesList) -Encoding Default | %{
        $aryServicesList += $_.ServiceName
    }

    #複数のサーバから指定したサービスの状態を取得
    Import-Csv (Join-Path $CurrentDir $ServersList) -Encoding Default | %{
        #エラー配列を初期化
        $error.Clear()
        #ホスト名の取得(HostName)
        $hn = $_.HostName
        $sv = Get-Service -ComputerName $hn | ? {$_.DisplayName -in @($aryServicesList)} | select MachineName, DisplayName, Status, StartType, @{Name="ErrorMessage"; Expression = {$error[0]}}
        $Result += $sv

        #進行状態を表示   
        Write-Host($hn + "を処理中です。")
    }
        #結果表示
        $Result | Format-Table -AutoSize -Wrap
        #レポート出力
        $Result | Export-Csv -NoTypeInformation (Join-Path $CurrentDir $Report) -Encoding Default
}Catch{
    $Error
}

ServersList.csv

対象サーバのホスト名、もしくはIPアドレスを入力します。ヘッダーの「HostName」は削除しないで下さい。

HostName
windows2003
windows2008
windows2012
windows2016
windows2019

ServicesList.csv

確認したいサービス名(DisplayName)を入力します。ヘッダーの「ServiceName」は削除しないで下さい。

ServiceName
Computer Browser
Netlogon
Windows Update

結果

Report-YYYYMMDD.csv

指定したサーバのサービス状態が確認できます。Windows Server2003には「Netlogon」と「Windows Update」サービスがないので表示されません。

MachineName DisplayName       Status StartType ErrorMessage
----------- -----------       ------ --------- ------------
windows2003 Computer Browser Running Automatic             
windows2008 Computer Browser Stopped  Disabled             
windows2008 Netlogon         Running Automatic             
windows2008 Windows Update   Running Automatic             
windows2012 Computer Browser Stopped  Disabled             
windows2012 Netlogon         Running Automatic             
windows2012 Windows Update   Stopped    Manual             
windows2016 Computer Browser Stopped  Disabled             
windows2016 Netlogon         Running Automatic             
windows2016 Windows Update   Stopped    Manual             
windows2019 Computer Browser Running    Manual             
windows2019 Netlogon         Running Automatic             
windows2019 Windows Update   Stopped    Manual      
タイトルとURLをコピーしました