はじめに
指定したサーバで自動サービスが開始されているかをチェックするスクリプトです。複数のサーバや除外したいサービスを指定することができます。
ドメインに参加していることを前提にしているため、ワークグループのサーバや専用アカウントでアクセスする必要がある場合は、以下をご参照下さい。
環境
OS:Windows10
.Net Framework:4.7
PowerShellのバージョン:5.1.17763.1007
ソースコード
AutoServiceCheck.ps1
#######################################################################################
# 概要:指定したサーバで自動サービスが起動しているかチェックします。
# 作成者:ITStudy
# 作成日:2020/05/27
# 必要なファイル:AutoServiceCheck.ps1(このファイルです)
# ServersList.csv(対象サーバを記載したCSVファイルです)
# SkipServiceList.csv(スキップするサービスを記載したCSVファイルです)
#######################################################################################
$CurrentDir = $PSScriptRoot
$ServersList = "ServersList.csv"
$SkipServiceList = "SkipServiceList.csv"
$Report = "Report-$(Get-Date -f yyyyMMdd).csv"
$aryServicesList = @()
$UnstartedServiceCheck = @()
$ErrorActionPreference = "SilentlyContinue"
try{
Import-Csv (Join-Path $CurrentDir $SkipServiceList) -Encoding Default | %{
$aryServicesList += $_.ServiceName
}
Import-Csv (Join-Path $CurrentDir $ServersList) -Encoding Default | %{
#エラー配列を初期化
$error.Clear()
#ホスト名の取得(HostName)
$hn = $_.HostName
#サービス名の初期化(DisplayName)
$dn=""
#自動サービスの起動チェック
$sl = Get-Service -ComputerName $hn | ?{$_.StartType -eq "Automatic" -and $_.Status -ne "Running" -and $_.DisplayName -notin @($aryServicesList)}
#未起動サービスの取得&カンマで連結
$sl | % {
if($dn -eq ""){
$dn += ($_.DisplayName)
}
else{
$dn += (", " + $_.DisplayName )
}
}
$UnstartedServiceCheck += [pscustomobject]@{"HostName"=$hn; "Unstarted Service"=$dn; "Check DateTime"=(Get-Date).ToString("yyyy/MM/dd HH:mm:ss"); "ErrorMessage"=$error[0]}
#進行状態を表示
Write-Host($hn + "を処理中です。")
}
#結果表示
$UnstartedServiceCheck | Format-Table -AutoSize -Wrap
#CSV出力
$UnstartedServiceCheck | Export-Csv -NoTypeInformation (Join-Path $CurrentDir $Report) -Encoding Default
}Catch{
$Error
}
ServersList.csv
対象サーバのホスト名、もしくはIPアドレスを入力します。ヘッダーの「HostName」は削除しないで下さい。
HostName
windows2003
windows2008
windows2012
windows2016
windows2019
SkipServiceList.csv
除外したいサービス名(DisplayName)を入力します。ヘッダーの「ServiceName」は削除しないで下さい。
ServiceName
Performance Logs and Alerts
Diagnostic Policy Service
Shell Hardware Detection
Software Protection
Microsoft .NET Framework NGEN v4.0.30319_X64
Microsoft .NET Framework NGEN v4.0.30319_X86
Windows Biometric Service
Remote Registry
Downloaded Maps Manager
結果
Report-YYYYMMDD.csv
自動サービスで開始していないサービスが表示されます。
HostName Unstarted Service Check DateTime ErrorMessage
-------- ----------------- -------------- ------------
windows2003 2020/06/07 11:13:08
windows2008 2020/06/07 11:14:17
windows2012 Google Update サービス (gupdate) 2020/06/07 11:14:18
windows2016 Google Update サービス (gupdate) 2020/06/07 11:14:19
windows2019 Google Update サービス (gupdate) 2020/06/07 11:14:19