我使用的是 Windows 10 Enterprise 1709 和 PowerShell 5.0 版。我在网上找到了这个 PowerShell 脚本。它有效,但我不明白代码中的一行在做什么,所以我可以决定如何编辑它以完成我需要做的事情。此外,即使驱动器不低于最低阈值,它也会发送电子邮件。我想了解这行代码并将其修复为仅在低于最低阈值时发送电子邮件警报。$freeSpaceGB = [Math]::Round([float]$disk.FreeSpace / 1073741824);
这条线$computer = $computer.toupper();
整个代码如下:
$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)
}
}
}
确定 HDD 的可用存储空间量(以千兆字节 (GB) 为单位),精确到最接近的 GB。
1,073,741,824 字节是1.073741824 GB,这是 Windows 用来表示单个千兆字节 (GB) 的字节数。
2^30 = 1,073,741,824
资料来源:技比
只需将计算机名称的大小写更改为全部大写。
的整数值
57
确实小于字符串的字母数字值50GB
。解释:
61,717,860,352 / 1,073,741,824 = 57.4792
57.4792将向下舍入为整数值57
原始代码段实际上指示了
$minGbThreshold
.来源:Windows Server 的自动磁盘空间警报