ドライブの空き容量を 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"
どんな助けにも感謝します。