여유 공간 (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
System.Array
PSCustomObject
타입을 반환한다. 나는이 기능을 다음과 같은 경로를 통과한다면 :
G:\Data\My\Test\Path
G:\Data
을 그것은 G:\Data
의 여유 공간을 찾을 수 마운트 지점입니다.
G:\Some\Other\Path
을 전달하면 G:\
드라이브의 여유 공간이 반환됩니다. 나는 그것을 이렇게 사용하고 싶다. $freeSpace = Get-FreeSpace "G:\Some\Other\Path"
나는 어떤 도움도 감사 할 것이다.
거의! 답장을 보내 주셔서 감사합니다. 하위 폴더에서도 작동해야합니다. 내 질문의 마지막 부분을 자세히 읽어보십시오.G : \ Data의 마운트 지점으로 2GB의 여유 공간이있는 드라이브가 있고 G : \ Data \ SubFolder를 통과하면 마운트 지점의 여유 공간이 아닌 반환 된 0이 표시됩니다. 마찬가지로 루트 드라이브의 하위 폴더에서는이 기능이 작동하지 않습니다. 따라서 G : \ Log가 마운트 포인트가 아니며 함수에 전달하면 0이됩니다. –