Я все еще изучаю сценарии PowerShell, и я работаю над скриптом для вычисления процента свободного места на моих файловых серверах и отправки уведомления по электронной почте, когда привод достигает 10% свободного места или меньше (это происходит примерно раз в месяц, и мне нужно знать, прежде чем я получаю по электронной почте от клиента, что больше нет места). На данный момент скрипт отлично работает и настроен для запуска каждое утро через Windows Task. Но текущее форматирование, которое у меня есть для вывода, выполняется вручную. Мне было интересно, есть ли способ передать переменные из информации, которая была собрана и рассчитана с помощью функции Get-WmiObject. Я попробовал Format-Table и попытался возиться с хэш-таблицами, но безрезультатно. Любые идеи были бы полезны. Благодарю.Создать таблицу с переменными в PowerShell
# Set Parameters
$file = "c:\location\Lowdisk.txt"
Clear-Content $file
$emailTO = "[email protected]"
$emailFrom = "[email protected]"
$smtpServer = "smtpServer"
$diskspace = "3"
$computers = ("FSCN01","FSCN02","FSCN03","FSCN04")
echo "Server Name Drive Drive Size Free Space % Free" >> $file
$i = 0
# Get Drive Data
foreach($computer in $computers)
{
$drives = Get-WmiObject -ComputerName $computer Win32_LogicalDisk | Where-Object {$_.DriveType -eq 3}
foreach($drive in $drives)
{
$ID = $drive.DeviceID
$size1 = $drive.size/1GB
$size = "{0:N1}" -f $size1
$free1 = $drive.freespace/1GB
$free = "{0:N1}" -f $free1
$a = $free1/$size1 * 100
$b = "{0:N1}" -f $a
# Monitor for drive free space % under 10%
if ($b -lt 10)
{
echo "$computer $ID $size $free $b" >> $file
$i++
}
}
}
# Send notification if script finds more than 0 drives with less than 35% free space
if ($i -gt 0)
{
foreach ($user in $emailTo)
{
echo "Sending Email Notification to $user"
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$subject = "Server with Low Disk Space"
foreach ($line in Get-Content $file)
{
$body += "$line `n"
}
Send-MailMessage -to $user -From $emailFrom -Attachments $file -SmtpServer $smtpServer -Subject $Subject -Body $body
$body = ""
}
}
Это именно то, что я хотел выполнить. Спасибо за вашу помощь!! – user3140412