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)