Windows PowerShell磁盘空间不足脚本

Windows PowerShell磁盘空间不足脚本,windows,powershell,powershell-2.0,powershell-3.0,Windows,Powershell,Powershell 2.0,Powershell 3.0,这是一些较大脚本的修改部分,当F驱动器上没有足够的磁盘空间容纳C驱动器上的映像时,该脚本会删除旧的VHD映像 function DiskSpace() { $Cdisk = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object Size,FreeSpace $Fdisk = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='F:'" | Select-Ob

这是一些较大脚本的修改部分,当F驱动器上没有足够的磁盘空间容纳C驱动器上的映像时,该脚本会删除旧的VHD映像

function DiskSpace() {
$Cdisk = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object Size,FreeSpace
$Fdisk = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='F:'" | Select-Object Size,FreeSpace
$CdiskCapacity = $Cdisk.size/1073741824
$CdiskFree = $Cdisk.freespace/1073741824
$CdiskUSed = $CdiskCapacity-$CDiskFree
$fdisk = $fdisk.freespace/1073741824

return $Fdisk, $cdiskUsed
}

if ($fdisk -gt $cdiskfree) {
write-host "Lot's of space on F: Drive"
}
diskspace
尽管它显示F驱动器上的容量超过1.1 TB,但它没有显示我的消息

PS C:\Users\Marek> C:\backup2.ps1
1153,06732559204
221,418087005615

怎么了?

首先,我建议在这里使用不同的变量名:

$fdisk = $fdisk.freespace/1073741824
而不是重用$fdisk

第二,在本守则中:

if ($fdisk -gt $cdiskfree) {
write-host "Lot's of space on F: Drive"
}
看起来您试图访问的变量a)仅在函数内部可用,b)在尚未实际调用的函数中可用


第三,作为一个风格问题,您可以使用1GB而不是1073741824。

您正在做大量额外的工作,请简化您喜欢的地方
$CdiskUsed=($Cdisk.Size-$Cdisk.FreeSpace)/1GB