Power Shell - daniel-qa/windows GitHub Wiki
Power Shell
腳本的字串要用英文,不要用中文,避免編碼問題
將腳本設定為定時執行
使用任務計劃程序執行:
打開「任務計劃程序」。
創建一個新任務:
觸發條件:設置每天或每小時執行。
動作:執行 PowerShell 命令:
發送Post API
# 構建消息
$message = @{
msgtype = "text"
text = @{
content = "警告: 磁碟 $($drive.Name) 剩餘空間僅為 $([math]::Round($freeSpacePercent, 2))%。請盡快處理。"
}
} | ConvertTo-Json -Depth 10 -Compress
# 發送到 DingTalk
Invoke-RestMethod -Uri $webhookUrl -Method Post -ContentType "application/json" -Body $message
- Depth 10 -Compress
Depth: 用來設置 JSON 轉換時的層級深度。這個參數確定了 JSON 對象的最大嵌套層數。默認值:-Depth 2,即最多支持兩層嵌套。
Compress: 參數用來壓縮 JSON 輸出的格式,這意味著它會去除不必要的空格和換行符,從而使輸出的 JSON 字符串更加緊湊,並節省空間。
檢查磁碟空間
- Check_C_Drive_Space.ps1
# 獲取 C 槽磁碟資訊
$drive = Get-PSDrive -Name C -PSProvider FileSystem
# 檢查 C 槽是否存在
if ($drive) {
# 計算總大小和剩餘空間百分比
$totalSpace = $drive.Used + $drive.Free
$freePercent = ($drive.Free / $totalSpace) * 100
# 列印 C 槽資訊
Write-Host "Disk Name: $($drive.Name)"
Write-Host "Free Space: $([math]::round($drive.Free / 1GB, 2)) GB"
Write-Host "Total Size: $([math]::round($totalSpace / 1GB, 2)) GB"
Write-Host "Free Percent: $([math]::round($freePercent, 2))%"
if ($freePercent -lt 10) {
Write-Host "Warning: C drive remaining space is less than 10%, please consider cleaning up disk space."
}
}else {
#Write-Host "找不到 C 槽的磁碟資訊, 請確認 C 槽是否存在"
Write-Host "Can't Find C Disk"
}
- 腳本說明:
計算剩餘百分比:通過 $drive.Free 和 $drive.Used + $drive.Free 計算剩餘空間的百分比。
顏色提示:在剩餘空間不足 10% 時,輸出紅色警告以引起注意。
容錯處理:如果找不到 C 槽,也會提示用戶檢查。
- .ps1 是 PowerShell 腳本檔案的副檔名。這是執行 PowerShell 指令碼的標準格式,Windows 系統會識別這類檔案並用 PowerShell 運行它們。
運行腳本
將腳本文件存放在方便的位置,例如 C:\Scripts\Check_C_Drive_Space.ps1。
- 打開 PowerShell,導航到腳本所在的文件夾:
cd C:\Scripts
- 運行腳本:
.\Check_C_Drive_Space.ps1
- 查看及設定 Poser Shell 編碼
[Console]::OutputEncoding
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
- PowerShell 中的比較運算符
-lt 是 PowerShell 中的一個 比較運算符,表示 "less than"(小於)。
在 PowerShell 中,您可以使用這些運算符來比較數值、字符串等。這些比較運算符用於條件判斷,像是 if 語句中,來確定某個條件是否成立。
常見的比較運算符:
-eq: 等於 (Equal)
-ne: 不等於 (Not Equal)
-gt: 大於 (Greater Than)
-lt: 小於 (Less Than)
-ge: 大於或等於 (Greater Than or Equal)
-le: 小於或等於 (Less Than or Equal)