我正在嘗試創建一個函數以返回MB中的可用驅動器空間量。該函數將路徑名稱作爲參數,並且必須處理掛載點。我的硬盤都設置這樣的:獲取PowerShell中提供的驅動器路徑的可用空間
- C:\ - Disk0上
- 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
返回一個PSCustomObject
的System.Array
類型。所以,如果我傳遞給函數以下路徑:
G:\Data\My\Test\Path
G:\Data
它會發現G:\Data
的自由空間掛載點。
如果我通過它G:\Some\Other\Path
,它將返回G:\
驅動器的可用空間。我想這樣使用它:$freeSpace = Get-FreeSpace "G:\Some\Other\Path"
我將不勝感激任何幫助。
差不多!謝謝回覆。我也需要它爲子文件夾工作。仔細閱讀我的問題的最後部分。如果我有一個2GB可用空間的驅動器作爲G:\ Data的安裝點,並且我傳入G:\ Data \ SubFolder,則返回0,而不是掛載點的可用空間。同樣,您的功能不適用於根驅動器的子文件夾。所以,如果G:\ Log不是一個掛載點,我將它傳遞給函數,我也得到0。 –