朋友主機的作業系統是 Windows Server 2012,之後會定期去做維護,那連線因為懶得用滑鼠按鍵去一個一個看,所以參考網路文章,寫了個簡單的腳本來一次印出來。
這腳本我命名為 du.ps1
function Get-FreeSpace {
param ([string]$path);
$space = (Get-Volume -FilePath $path).SizeRemaining;
return [int64]($space / (1024 * 1024)); # this would otherwise be a float
}
$freeSpace = Get-FreeSpace "C:\"
Write-Host $freeSpace, "MB" -Separator " "
$freeSpace = Get-FreeSpace "D:\"
Write-Host $freeSpace, "MB" -Separator " "
$freeSpace = Get-FreeSpace "E:\"
Write-Host $freeSpace, "MB" -Separator " "
Read-Host "Press ENTER to exit"
簡單說明如下:
Get-Volume -FilePath "<path>"
是取得指定路徑的物件,然後取物件的 SizeRemaining 屬性。- 因為單位是 bytes,所以除以 1024 變成 K,再除以 1024 變成 MB
- 用 Write-Host 印出來,因為找不到類似 printf 或 print 的函式。Write-Host 的 -Separator 參數是指定分隔符號,這邊我用 ” ” 當作分隔,所以印出時,就會是 “100 MB” 這樣子的字串。
- 最後用 Read-Host 等按鍵,因為之後我會用滑鼠點一點來執行,若不加這行,執行完,視窗就會消失。
開啟 PowerShell 終端機視窗來執行 .\du.ps1 時,會有錯誤訊息,說不允許執行。這時候需要先執行下面這行,才能執行
Set-ExecutionPolicy RemoteSigned
沒有留言:
張貼留言