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