複製貼上這個範例腳本,並根據你的環境進行修改:

<# .劇情簡介     顯示安全啟動部署協調器的當前狀態。

.DESCRIPTION     提供即時的部署進度可視性:     - 當前波數與目標裝置     - 裝置更新與待處理     - 需要處理的堵塞桶     - 近期活動記錄     - 儀表板連結          隨時跑這個測試看看推送進度。

.PARAMETER ReportBasePath     編排器使用的報告/狀態目錄路徑

.PARAMETER ShowLog     顯示最近 50 行 (日誌條目)

.PARAMETER ShowBlocked     顯示阻塞桶的詳細資料

.PARAMETER ShowWaves     裝置數量的秀波歷史

.PARAMETER Watch     每N秒持續刷新狀態

.PARAMETER OpenDashboard     在瀏覽器中開啟最新的 HTML 儀表板

.EXAMPLE     .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath 「C:\SecureBootReports」

.EXAMPLE     .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath 「C:\SecureBootReports」 -Watch 30

.EXAMPLE     .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath “C:\SecureBootReports” -OpenDashboard #>

[CmdletBinding()] 參數 (     [參數 (強制 = $true) ]     [string]$ReportBasePath,          [參數 (強制 = $false) ]     [切換]$ShowLog,          [參數 (強制 = $false) ]     [開關]$ShowBlocked,          [參數 (強制 = $false) ]     [開關]$ShowWaves,          [參數 (強制 = $false) ]     [int]$Watch = 0,          [參數 (強制 = $false) ]     [切換]$OpenDashboard )

$ErrorActionPreference = "Stop" $DownloadUrl = 「https://aka.ms/getsecureboot」 $DownloadSubPage = 「部署與監控樣本」

# Note: This script has no dependencies on other scripts. # 完整工具組請下載:$DownloadUrl -> $DownloadSubPage

# ============================================================================ # 輔助功能 # ============================================================================

function ConvertTo-Hashtable {     參數 ([參數 (ValueFromPipeline = $true) ]$InputObject)     過程 {         若 ($null -eq $InputObject) { 返回 @{} }         如果 ($InputObject -is [System.Collections.IDictionary]) { return $InputObject }         如果 ($InputObject -是 [PSCustomObject]) {             $hash = @{}             在 $InputObject.PSObject.Properties) { 中每個 ($prop                 $hash[$prop。姓名] = ConvertTo-Hashtable $prop。價值             }             回歸$hash         }         若 ($InputObject -是 [System.Collections.IEnumerable] -且 $InputObject -isnot [字串]) {             回覆 @ ($InputObject |ForEach-Object { ConvertTo-Hashtable $_ })         }         $InputObject     } }

function Show-Status {     $stateDir = Join-Path $ReportBasePath「RolloutState」     $rolloutStatePath = Join-Path $stateDir「RolloutState.json」     $blockedBucketsPath = Join-Path $stateDir「BlockedBuckets.json」          清除宿主     Write-Host「」     Write-Host (“=” * 80) -前景色彩 青色     Write-Host「安全啟動狀態」-ForegroundColor 青色     Write-Host 「$ (Get-Date -格式 'yyyy-mm-dd HH:mm:ss') 」 -前景灰色     Write-Host (“=” * 80) -前景色 青色     Write-Host「」          # 檢查編排任務是否正在執行     $task = Get-ScheduledTask -TaskName “SecureBoot-Rollout-Orchestrator” -ErrorAction silentlyContinue     如果 ($task) {         $taskState = $task。州         $color = 若 ($taskState -eq 「運行中」) { 「綠色」 } 否則 ($taskState -eq 「準備」) { 「黃色」 } 否則 { 「紅色」 }         Write-Host「排程任務:」-NoNewline         Write-Host $taskState -前景色彩$color     } 否則 {         Write-Host「排程任務:」-NoNewline         Write-Host 「未安裝」-前景灰色     }          # 載入啟動狀態     如果 (-not (測試路徑$rolloutStatePath) ) {         Write-Host「」         Write-Host「找不到啟動狀態。 編曲者可能還沒開始。」——前景黃色         Write-Host「狀態路徑:$rolloutStatePath」-前景灰色         回歸     }          $state = Get-Content $rolloutStatePath -原始 |ConvertFrom-Json |ConvertTo 雜湊表          Write-Host「」     Write-Host「推出進度」-前景色:黃色     Write-Host (“-” * 40)          $status = $state。現況     $statusColor = 開關 ($status) {         「完成」 { 「綠色」 }         「進展中」 { 「青色」 }         「未開始」 { 「灰色」 }         預設 { 「白色」 }     }          Write-Host 「狀態:」-NoNewline     Write-Host $status -前景色彩$statusColor     Write-Host「當前浪: ($state 美元。CurrentWave) ”     Write-Host「目標總額: ($state 美元。TotalDevices Targeted) 」     Write-Host「總更新:$ ($state。TotalDevices更新) 」          如果 ($state。開始) {         Write-Host「開始:$ ($state。從) 開始」     }     如果 ($state。LastAggregation) {         Write-Host「最後支票: ($state 美元。最後彙整) 」     }     如果 ($state。完成於) {         Write-Host「完成:$ ($state。完成於) 」-前景綠色     }          # 顯示進度條     如果 ($state。TotalDevicesTargeted -gt 0) {         $pct = 如果 ($state。TotalDevicesUpdated -和$state。TotalDevicesTargeted) {             [數學]:: ( ($state 回合。TotalDevicesUpdated / $state。TotalDevicesTargetd) * 100,1)         } 否則 { 0 }                  Write-Host「」         Write-Host 「進展:」-NoNewline         $barWidth = 40         $filled = [數學]::地板 ($barWidth * $pct / 100)         Write-Host 「[“ -NoNewline         Write-Host (“█” * $filled) -前景顏色 綠色 -noNewline         Write-Host (「░」* ($barWidth - $filled) ) -前景色 深灰色 -無新行         Write-Host 「] $pct%」     }          # 堵塞桶摘要     若 (測試路徑$blockedBucketsPath) {         $blocked = Get-Content $blockedBucketsPath -原始 |ConvertFrom-Json |ConvertTo 雜湊表         如果 ($blocked。Count -gt 0) {             Write-Host「」             Write-Host 「阻塞桶:」-無新行 -前景紅色             Write-Host「$ ($blocked。數) 桶需要注意」——前景紅色                          如果 ($ShowBlocked) {                 Write-Host「」                 每個 ($key 在$blocked。鑰匙) {                     $info = $blocked[$key]                     Write-Host 「► $key」-前景紅色                     Write-Host 「理由: ($info 美元。」原因) “ -前景灰色                     Write-Host 「裝置: ($info 美元。故障裝置) “ -前景灰色                     Write-Host 「自:$ ($info。) 秒被封鎖 -前景灰色                 }             } 否則 {                 Write-Host 「用 -ShowBlocked 以獲取細節」-ForegroundColor Gray             }         }     }          # 浪潮歷史     如果 ($ShowWaves -和$state。WaveHistory 與 $state。WaveHistory.Count -gt 0) {         Write-Host「」         Write-Host 「浪潮歷史」-前景色:黃色         Write-Host (“-” * 40)                  每個 ($wave$state。波浪歷史) {             Write-Host「揮手$ ($wave。波號) :「-無新行 -前景色青色             Write-Host「$ ($wave」。裝置計數) 裝置」-NoNewline             Write-Host “ - ($wave 美元。開始於) 」-前景灰色         }     }          # 最新儀表板     $latestAggregation = Get-ChildItem -路徑 $ReportBasePath -Directory -過濾器「Aggregation_*」 -ErrorAction 靜默繼續 |         Sort-Object 名稱 - 降序 |         Select-Object -第一          如果 ($latestAggregation) {         $dashboard = Get-ChildItem -路徑 $latestAggregation.FullName -Filter “*Dashboard*.html” -ErrorAction SilentlyContinue |             Select-Object -第一                  如果 ($dashboard) {             Write-Host「」             Write-Host 「最新儀表板」-前景色 黃色             Write-Host $dashboard。全名 - 前景灰色                          如果 ($OpenDashboard) {                 Start-Process $dashboard。全名             }         }     }          # 近期紀錄     如果 ($ShowLog) {         $logFile = Get-ChildItem -路徑 $stateDir -過濾器「Orchestrator_*.log」 -錯誤動作靜默繼續 |             Sort-Object 名稱 - 下降 |             Select-Object -第一                  如果 ($logFile) {             Write-Host「」             Write-Host 「近期日誌」-前景色:黃色             Write-Host (“-” * 40)                          Get-Content $logFile.全名 -尾巴20 |ForEach-Object {                 如果 ($_ -匹配 '\[ERROR\]') {                     Write-Host $_ -前景紅色                 } 否則 ($_ -match '\[Warrn\]') {                     Write-Host $_ -前景顏色 黃色                 } elseif ($_ -match '\[OK\]') {                     Write-Host $_ -前景綠色                 } 否則 ($_ -match '\[WAVE\]') {                     Write-Host $_ -前景色青色                 } 否則 {                     Write-Host $_ -前景灰色                 }             }         }     }          Write-Host「」     Write-Host (“-” * 80) -前景色彩 深灰色          如果 (-not $ShowLog -或 -not $ShowWaves -或 -not $ShowBlocked) {         Write-Host 「選項:-ShowLog |-ShowWaves |-ShowBlocked |-OpenDashboard |-Watch 30“ -前景色彩 深灰色     } }

# ============================================================================ # 主線 # ============================================================================

if (-not (Test-Path $ReportBasePath)) {     Write-Host 「報告路徑未找到:$ReportBasePath」-前景紅色     出口1 }

if ($Watch -gt 0) {     Write-Host「每 $Watch 秒監控狀態。 按 Ctrl+C 停止。」-前景青色     雖然 ($true) {         節目狀態         Start-Sleep -幾秒$Watch     } } 否則 {     節目狀態 }  

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。