0
如果驅動器的可用空間爲100%空閒,並且將最小閾值空間設置爲25%,則腳本不正確報告驅動器低於閾值。意味着100 儘管如果我要用 替換 $ FreePercent =「{0:N0}」-f(100 * $ objDisk.FreeSpace/$ objDisk.Size)$ FreePercent =(100 * $ objDisk.FreeSpace/$ objDisk .Size)... 我得到正確的結果。 我如何解決舍入問題。 這裏是我的代碼使用powershell返回服務器上所有驅動器的可用空間
# For Loop - get % free space of all drives
#Define Variables
$Notify = 0
$MinFreePercent = "25"
#$FileDriveSpace = "c:\temp\DriveSpace.txt"
$ComputerName = $(Get-WmiObject Win32_Computersystem).name
$OutArray = @()
$outarray += "Disk space Alerts and Utilizations on server $ComputerName"
$AllDisks = get-wmiobject Win32_LogicalDisk -Filter 「DriveType = 3"
#Omit the a, b drives if exist
$AllDisks = $AllDisks | ? { $_.DeviceID -notmatch "[ab]:"}
foreach ($objdisk in $AllDisks)
{
#$FreePercent = "{0:P0} " -f ($objDisk.FreeSpace/$objDisk.Size)
$FreePercent = "{0:N0}" -f (100 * $objDisk.FreeSpace/$objDisk.Size)
If ($FreePercent -lt $MinFreePercent)
{
$Threshold = "Threshold Reached"
$Notify = 1
}
Else
{ $Threshold = "N/A"}
$DeviceId = $objDisk.DeviceID
$myobj = "" | Select "Drive","PercentFreeSpace", "Threshold"
$myobj.Drive = $DeviceId
$myobj.PercentFreeSpace = $FreePercent
$myobj.Threshold = $Threshold
$outLine = $DeviceId + " " + $FreePercent + " " + $Threshold + " " + $MinFreePercent
$outLine
#Add the object to the out-array
$outarray += $myobj
#Wipe the object just to be sure
$myobj = $null
}
謝謝傑森。這解釋了它 – user975893