我需要撰寫一個 power-shell 腳本,如果可用磁盤空間超過 50GB,則 - “做某事”,否則退出腳本 - 什么也不做。
為此,我試圖將可用磁盤空間值保存在 a$var中并if-else在我的腳本中使用 a ,例如:
$var = <parse disk space free from Get-PSDrive C output>
if ($var -ge 50) {
#Do something
}
else {
#Do nothing
}
到目前為止我試過這個:
$var = Get-PSDrive C -psprovider Filesystem | select-object @{Name="Free"; Expression={$_.Free/1GB}}
但是列印$var給了我:@{Free=112.352230072021},但我想要的是112,即只是可用磁盤空間值,四舍五入到小數點前的任何值。
需要做什么 ?power-shell 中是否有任何Unix樣式awk或sed決議輸出?
uj5u.com熱心網友回復:
PSDrive 上的Free屬性以位元組為單位。將驅動器放在超過一定數量的地方非常簡單,不需要計算任何東西,不需要變數,不需要if/ else:
Get-PSDrive C -PSProvider FileSystem | where Free -gt 50GB | foreach {
Write-Host $_
# do something
}
50GB是 PowerShell 內置的便捷簡寫50 * 1073741824。還存在其他此類簡寫 ( KB, MB, TB, PB)。
uj5u.com熱心網友回復:
如果您真的想使用if/else結構,那么這將起作用。[咧嘴笑]
代碼 ...
$TargetDisk = 'c'
$MinDiskFree_GB = 50
# uncomment the line below to show the "too small" error msg
#$MinDiskFree_GB = 5000
$ActualDiskFree_GB = [math]::Round((Get-PSDrive -Name $TargetDisk).Free / 1gb, 2)
if ($ActualDiskFree_GB -gt $MinDiskFree_GB)
{
Write-Host ('Drive [ {0} ] has enuff free space. [ {1} GB]' -f $TargetDisk, $ActualDiskFree_GB)
}
else
{
Write-Warning (' Drive [ {0} ] does not have enuff free space. [ {1} GB]' -f $TargetDisk, $ActualDiskFree_GB)
}
輸出兩個測驗值中的每一個...
Drive [ c ] has enuff free space. [ 845.77 GB]
WARNING: Drive [ c ] does not have enuff free space. [ 845.77 GB]
它能做什么 ...
如果您需要多次運行它,則定義變數,它作為帶引數的函式可能會更好。- 以 GB 為單位獲取可用空間
- 比較實際與所需的最小空閑 GB
- 做適當的事
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/444127.html
標籤:电源外壳
