多奇 IT 部落格

記錄著多奇數位在工作中對資訊技術的心得筆記

      在接下一些伺服器維運工作之後,常有客戶想知道硬體運作的狀況

      比如說:硬碟的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

image

       不過上述的動作也只是檢查目前硬碟空間的剩餘資訊而已

       最終還需要系統可以自動化的發出警告或通知

       這才是硬體維運的目標,所以透過下面的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

留言與評論


本篇文章的留言功能已關閉!