はじめに
指定したサーバのサービスを停止するスクリプトです。サーバとサービスは複数指定することができます。
環境
OS:Windows10
.Net Framework:4.7
PowerShellのバージョン:5.1.17134.858
ソースコード
ServiceStop.ps1
#######################################################################################
# 概要:指定したサーバのサービスを停止します。
# 作成者:ITStudy
# 作成日:2020/02/16
# 必要なファイル:ServiceStop.ps1(このファイルです)
# ServersList.csv(対象サーバを記載したCSVファイルです)
# ServicesList.csv(停止するサービスを記載したCSVファイルです)
#######################################################################################
$CurrentDir = $PSScriptRoot
$ServersList = "ServersList.csv"
$ServicesList = "ServicesList.csv"
$Report = "Report-$(Get-Date -f yyyyMMdd).csv"
$aryServicesList = @()
$StoppedService = @()
$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
#サービス名の初期化(DisplayName)
$dn=""
#指定したサービスの停止
$sl = Get-Service -ComputerName $hn | ? {$_.DisplayName -in @($aryServicesList) -and $_.Status -eq "Running"}
$sl | Stop-Service
#停止したサービスの取得&カンマで連結
$sl | % {
if($dn -eq ""){
$dn += ($_.DisplayName)
}
else{
$dn += (", " + $_.DisplayName )
}
}
$StoppedService += [pscustomobject]@{"HostName"=$hn; "Stopped Service"=$dn; "Check DateTime"=(Get-Date).ToString("yyyy/MM/dd HH:mm:ss"); "ErrorMessage"=$error[0]}
#進行状態を表示
Write-Host($hn + "を処理中です。")
}
#結果表示
$StoppedService | Format-Table -AutoSize -Wrap
#レポート出力
$StoppedService | 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
Remote Registry
Windows Biometric Service
結果
Report-YYYYMMDD.csv
指定したサーバのサービスを停止します。すでにサービスが停止している場合やサービスが存在しない場合はスキップします。
HostName Stopped Service Check DateTime ErrorMessage
-------- --------------- -------------- ------------
windows2003 Remote Registry 2020/06/28 02:04:32
windows2008 Remote Registry 2020/06/28 02:04:32
windows2012 Remote Registry 2020/06/28 02:04:32
windows2016 Remote Registry, Windows Biometric Service 2020/06/28 02:04:32
windows2019 Remote Registry, Windows Biometric Service 2020/06/28 02:04:32