我正在尝试创建一个函数来返回以 MB 为单位的可用驱动器空间量。该函数将路径名作为参数,并且必须处理挂载点。我的驱动器是这样设置的:
- C:\ - 磁盘0
- G:\ - 磁盘 1
- G:\数据-磁盘2
所以我想做类似的事情:
function Get-FreeSpace {
param (
$path
);
# iterate through and find the volume, detect if in a mount point and return free space
#
return [int]$freeSpace;
}
我已经考虑在我的函数中使用这个数组作为起点,但我被卡住了。
$vols = Get-WMIObject Win32_Volume -filter "DriveType=3" -computer $computerName | Select Caption,DriveLetter,Label,@{Name="DiskSize(GB)";Expression={[decimal]("{0:N1}" -f($_.capacity/1gb))}},@{Name="PercentFree(%)";Expression={"{0:P2}" -f(($_.freespace/1mb)/($_.capacity/1mb))}}
$vols
正在返回一个System.Array
类型PSCustomObject
。因此,如果我通过以下路径传递函数:
G:\Data\My\Test\Path
G:\Data
它将找到G:\Data
挂载点的可用空间。
如果我通过它G:\Some\Other\Path
,它将返回G:\
驱动器的可用空间。我想像这样使用它:$freeSpace = Get-FreeSpace "G:\Some\Other\Path"
如果有任何帮助,我将不胜感激。