とりあえず形にしました。
#
# Cドライブの空き容量が90GBを下回った場合にのみメッセージを出力したい場合
#
# 監視対象ドライブ
$targetDrive = "C"
# しきい値(GB単位)
$threshold = 90
# パスワードファイルのパス
$credentialFile = "C:\passwords.txt"
# パスワードファイルからユーザー名とパスワードを読み込む
$credentials = Get-Content $credentialFile | ConvertFrom-Csv
# 各サーバに対して処理を実行
foreach ($server in $servers) {
$credential = $credentials | Where-Object { $_.ServerName -eq $server }
# Credentialオブジェクトを作成
$credentialObject = New-Object System.Management.Automation.PSCredential (
$credential.Username,
(ConvertTo-SecureString $credential.Password -AsPlainText -Force)
)
try {
# サーバに接続し、ディスク容量を取得
Invoke-Command -ComputerName $server -Credential $credentialObject -ScriptBlock {
$volume = Get-Volume -DriveLetter $using:targetDrive
if ($volume.Available -lt $using:threshold * 1GB) {
Write-EventLog -LogName Application -Source "DiskSpaceMonitor" -EventID 1001 -Message
"ドライブ$($volume.DriveLetter)の空き容量がしきい値を下回っています。$($volume.Available / 1GB:N2) GB"
}
}
}
catch {
Write-Warning "サーバー $server への接続に失敗しました: $($_.Exception.Message)"
}
}
[0回]
PR