powershell提取win、linux磁碟剩餘空間指令碼講解
下載地址:
https://gitee.com/chuanjiao10/kasini3000/tree/master/node_script
新增:
hqdl獲取linux磁碟剩餘空間.ps1
hqdw獲取win磁碟剩餘空間.ps1
hqdl獲取linux磁碟剩餘空間.ps1 用法:$a = ./hqdl獲取linux磁碟剩餘空間.ps1 -磁碟mount路徑 '/boot/efi'
if ($a.剩餘空間 -lt 123) { '磁碟空間少於123mb' }
或
$a = ./hqdl獲取linux磁碟剩餘空間.ps1 -磁碟源 '/dev/sda1'
if ($a.剩餘空間 -lt 123) { '磁碟空間少於123mb' }
對於多個返回物件,需要用foreach。
前幾天我也在寫,提取磁碟剩餘空間的指令碼。我以為很簡單,但我發現 df |grep /dev 並不好。會把mount路徑為/dev/shm的也獲取出來,還得把這個刨除。後來我就寫了個指令碼,解決這個問題。
指令碼傳入兩個引數,引數名是中文的,如【-磁碟源】。當然也可以是英文的,如【-disk_source】然後我對這兩個引數,使用and來過濾。也就是說必須同時符合磁碟源、和mount路徑、才輸出。請看程式碼:
${private:結果物件} = ${private:磁碟物件} | Where-Object { $_.源 -Match $磁碟源 -and $_.mount -Match $磁碟mount路徑 }
實際上,我猶豫了。是不是用or更好些?也就是滿足匹配磁碟源,或mount路徑,就輸出。你覺得呢?
使用《卡死你3000》遠端用法:
k_run_ip.ps1 -被控機ip地址 '192.168.168.1' -powershell程式碼塊 {
/etc/kasini3000/node_script/hqdl獲取linux磁碟剩餘空間.ps1 -磁碟源 $args[0] -磁碟mount路徑 $args[1]
} -全部傳入引數 '/dev/sda1','/mnt/mount1'
當然了。假如每個linux磁碟名一樣,或mount路徑一樣,就可以不用傳參,在指令碼內硬編碼。