在接下一些伺服器維運工作之後,常有客戶想知道硬體運作的狀況
比如說:硬碟的I/O、CPU的平均使用量,硬碟空間等等的資訊
這些資訊當然都可以從UI介面上透過設定還顯示
但不僅麻煩也需要花上一點時間,我今天分享的是透過PowerShell指令來顯示本機的磁碟資訊
包括了硬碟數量、磁區代號、總空間、剩餘空間、硬碟類型等資訊。
PoWerShell指令如下:
gwmi Win32_LogicalDisk -Filter "DriveType=3" |
select Name, FileSystem,FreeSpace,BlockSize,Size |
%{$_.BlockSize=(($_.FreeSpace)/($_.Size))*100;$_.FreeSpace=($_.FreeSpace/1GB);$_.Size=($_.Size/1GB);$_} |
Format-Table Name,
@{n='FS';e={$_.FileSystem}},
@{n='Free, Gb';e={'{0:N2}'-f $_.FreeSpace}},
@{n='Free,%';e={'{0:N2}'-f $_.BlockSize}},
@{n='Capacity ,Gb';e={'{0:N3}' -f $_.Size}} –AutoSize
不過上述的動作也只是檢查目前硬碟空間的剩餘資訊而已
最終還需要系統可以自動化的發出警告或通知
這才是硬體維運的目標,所以透過下面的PowerShell指令
我設定為只要有硬碟空間小於百分之10的情況下,以SMTP Server寄信通知收件者
指令如下
$mythreshold = 10
$freespace = gwmi Win32_LogicalDisk -Filter "DriveType=3" | select Name, FileSystem,FreeSpace,BlockSize,Size
ForEach($item in $freespace)
{
$item.BlockSize=(($item.FreeSpace)/($item.Size))*100
$item.FreeSpace=($item.FreeSpace/1GB)
$item.Size=($item.Size/1GB)
if ($item.BlockSize -lt $mythreshold){
$from = "[email protected]"
$to = "[email protected]"
$subject = "Low Disk Space!"
$body = "Free Space Remaining: " + "<p></p>磁碟總容量(GB):" + $item.size + "<p></p>剩餘空間(GB):" + $item.FreeSpace + "<p></p>磁區:" + $item.name + "<p></p>剩餘百分比:" + $item.BlockSize +"%"
$smtpServer = "192.168.2.3"
Send-MailMessage -From $from -to $to -Subject $subject -Body $body -SmtpServer $smtpServer -BodyAsHtml -Encoding UTF8
}
}
參考文件
Win32_LogicalDisk class
Chkdsk method of the Win32_LogicalDisk class