$servers = @(
@{ "fqdn" = "adds01.example.com"; "username" = "administrator"; "password" = "p@55w0rd" },
@{ "fqdn" = "adds02.example.com"; "username" = "administrator"; "password" = "p@55w0rd" },
@{ "fqdn" = "tfs.example.com"; "username" = "administrator"; "password" = "p@55w0rd" }
)
foreach ($server in $servers) {
try {
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList ($server.username, (ConvertTo-SecureString $server.password -AsPlainText -Force))
$session = New-PSSession -ComputerName $server.fqdn -Credential $cred
$cmd = {
Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DriveType -eq 3 -and $_.FreeSpace -lt $_.Size * 0.05 } | Select-Object DeviceID, @{Name='Utilization';Expression={($_.Size - $_.FreeSpace) / $_.Size * 100}}
}
$result = Invoke-Command -Session $session -ScriptBlock $cmd
if ($result) {
Write-Host "Low disk space warning on $($server.fqdn):"
$result | Format-Table -AutoSize
}
} catch {
Write-Host "Failed to connect to $($server.fqdn): $_"
} finally {
if ($session) {
Remove-PSSession $session
}
}
}