Estou usando o Windows 10 Enterprise 1709 e o PowerShell versão 5.0. Eu tenho este script do PowerShell abaixo que encontrei online. Funciona, mas não entendo o que uma linha de código está fazendo, então posso decidir como editá-la para o que preciso fazer. Além disso, ele envia um e-mail mesmo que a unidade não esteja abaixo do limite mínimo. Gostaria de entender esta linha do código e corrigi-la para enviar apenas alerta por e-mail quando atingir abaixo do limite mínimo. $freeSpaceGB = [Math]::Round([float]$disk.FreeSpace / 1073741824);
e esta linha$computer = $computer.toupper();
O código inteiro está abaixo:
$minGbThreshold = 50GB
$computers = $env:COMPUTERNAME
$smtpAddress = "smtp.anydomain.com"
$toAddress = "[email protected]"
$fromAddress = "[email protected]"
foreach($computer in $computers)
{
$disks = Get-WmiObject -ComputerName $computer -Class Win32_LogicalDisk -Filter "DriveType = 3";
$computer = $computer.toupper();
$deviceID = $disk.DeviceID;
foreach($disk in $disks)
{
$freeSpaceGB = [Math]::Round([float]$disk.FreeSpace / 1073741824);
if($freeSpaceGB -lt $minGbThreshold)
{
$smtp = New-Object Net.Mail.SmtpClient($smtpAddress)
$msg = New-Object Net.Mail.MailMessage
$msg.To.Add($toAddress)
$msg.From = $fromAddress
$msg.Subject = “Diskspace below threshold ” + $computer + "\" + $disk.DeviceId
$msg.Body = $computer + "\" + $disk.DeviceId + " " + $freeSpaceGB + "GB Remaining";
$smtp.Send($msg)
}
}
}
Determina a quantidade de espaço de armazenamento livre que o HDD tem em Gigabytes (GB) para o GB mais próximo.
1.073.741.824 bytes é 1,073741824 Gigabytes, que é a quantidade de bytes que o Windows usa para indicar um único Gigabyte (GB).
2^30 = 1.073.741.824
Fonte: Gibibyte
Simplesmente muda o caso do nome do computador para todas as letras maiúsculas.
O valor inteiro de
57
é realmente menor que o valor alfanumérico da string50GB
.Explicação:
61.717.860.352 / 1.073.741.824 = 57,4792
57,4792 arredondaria para um valor inteiro de 57
O snippet original realmente indicava o valor correto para
$minGbThreshold
.Fonte: Alertas automatizados de espaço em disco para Windows Server