http://www.powershellneedfulthings.com/?p=36 기반의 전원 쉘 스크립트를 사용하여 할당 된 드라이버 문자가없는 볼륨의 디스크 공간을 확인하고 있습니다.드라이브 문자가없는 드라이브의 Powershell 디스크 여유 공간
스크립트가 제대로 작동하지만 디스크 여유 공간이 10 % 미만인 드라이브 만 표시되는 것을 필터링하고 싶습니다. 해시 테이블과 함께 where-object 필터를 사용하는 데 문제가 있습니다. 내가 뭘하려
# calculations for displaying disk size information
$TotalGB = @{Name="Capacity(GB)";expression={[math]::round(($_.Capacity/ 1GB),2)}}
$FreeGB = @{Name="FreeSpace(GB)";expression={[math]::round(($_.FreeSpace/1GB),2)}}
$FreePerc = @{Name="Free(%)";expression={[math]::round(((($_.FreeSpace/1GB)/($_.Capacity/1073741824)) * 100),0)}}
# array declarations
$volumes = @()
# import server names to check
$servers = (Get-Content .\servers.txt)
# check disk space for volumes without drive letter
foreach ($server in $servers){
$volumes += Get-WmiObject -computer $server win32_volume | Where-Object {$_.DriveLetter -eq $null -and $_.Label -ne "System Reserved"}
}
$volumes | Select SystemName, Label, $TotalGB, $FreeGB, $FreePerc | Format-Table -AutoSize
은 다음과 같습니다
Where-Object {$FreePerc -le 10}
전류 출력은 다음과 같습니다
SystemName Label Capacity(GB) FreeSpace(GB) Free(%)
---------- ----- ------------ ------------- ----
SERVER01 X:\data\ 9.97 0.89 9
SERVER01 X:\log\ 9.97 1.20 12
SERVER01 X:\info\ 9.97 3.49 35
난 단지 10 % 미만의 디스크 여유 공간이 볼륨을 보여주고 싶습니다. 따라서이 경우에는 첫 번째 항목 만 표시해야합니다.
감사합니다.
arco444 @ 감사를 업데이트 할 필요가 있지만, 그래서 우리는 우리가 필터링 할 필요 볼 수 있습니다 당신은 다음 몇 가지 샘플 출력이 있나요 영향 중 하나 – powersheller
을하지 않는 것 그 방법은? 또한'Format-table' 앞에 올바른 Where-Object {$ FreePerc -le 10}을 넣으십시오. – Matt
@Matt 위의 코드에 출력을 추가했습니다. 'Format-table' 전에'Where-Object {$ FreePerc -le 10}'을 추가하면 오류가 발생합니다 :'연산자에 잘못된 인수가 있습니다 '-le': "System.Collections.Hashtable"을 "10". 오류 : ""System.Int32 "유형의"10 "값을"System.Collections.Hashtable "유형으로 변환 할 수 없습니다." – powersheller