Copiați și lipiți acest script eșantion și modificați după cum este necesar pentru mediul dvs.:

<# . SINOPSIS     Afișează starea curentă a orchestratorului de implementare secure boot.

.DESCRIPTION     Oferă vizibilitate în timp real în progresul lansării:     - Numărul curent de undă și dispozitivele direcționate     - Dispozitive actualizate versus în așteptare     - Bucketuri blocate care necesită atenție     - Jurnal de activitate recent     - Link tablou de bord     Rulați oricând acest lucru pentru a vedea cum progresează implementarea.     

.PARAMETER ReportBasePath     Calea către raportul/directorul de stare utilizat de orchestrator

.PARAMETER ShowLog     Afișare intrări jurnal recente (ultimele 50 de linii)

.PARAMETER ShowBlocked     Afișați detalii despre bucketurile blocate

.PARAMETER ShowWaves     Afișați istoricul valurilor cu numărul de dispozitive

.PARAMETER Watch     Reîmprospătați continuu starea la fiecare N secunde

.PARAMETER OpenDashboard     Deschideți cel mai recent tablou de bord HTML în browser

.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()] param(     [Parametru(Obligatoriu = $true)]     [șir]$ReportBasePath,     [Parametru(Obligatoriu = $false)]     [comutator]$ShowLog,     [Parametru(Obligatoriu = $false)]     [comutator]$ShowBlocked,     [Parametru(Obligatoriu = $false)]     [comutator]$ShowWaves,     [Parametru(Obligatoriu = $false)]     [int]$Watch = 0,     [Parametru(Obligatoriu = $false)]     [comutator]$OpenDashboard )                         

$ErrorActionPreference = "Stop" $DownloadUrl = "https://aka.ms/getsecureboot" $DownloadSubPage = "Eșantioane de implementare și monitorizare"

# Note: This script has no dependencies on other scripts. # Pentru set de instrumente complet, descărcați de la: $DownloadUrl -> $DownloadSubPage

# ============================================================================ # FUNCȚII AJUTOR # ============================================================================

function ConvertTo-Hashtable {     param([Parameter(ValueFromPipeline = $true)]$InputObject)     proces {         dacă ($null -eq $InputObject) { returnează @{} }         dacă ($InputObject -este [System.Collections.IDictionary]) { returnează $InputObject }         dacă ($InputObject -este [PSCustomObject]) {             $hash = @{}             foreach ($prop în $InputObject.PSObject.Properties) {                 $hash[$prop. Nume] = ConvertTo-Hashtable $prop. Valoarea             }             $hash de returnare         }         dacă ($InputObject -este [System.Collections.IEnumerable] -and $InputObject -isnot [șir]) {             returnează @($InputObject | ForEach-Object { ConvertTo-Hashtable $_ })         }         $InputObject de returnare     } }

function Show-Status {     $stateDir = Join-Path $ReportBasePath "RolloutState"     $rolloutStatePath = Join-Path $stateDir "RolloutState.json"     $blockedBucketsPath = Join-Path $stateDir "BlockedBuckets.json"     Golire gazdă     Write-Host ""     Write-Host ("=" * 80) -Prim-planColor Cyan     Write-Host " SECURE BOOT ROLLOUT STATUS" -ForegroundColor Cyan     Write-Host " $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" -Prim-planColor gri     Write-Host ("=" * 80) -Prim-planColor Cyan     Write-Host ""     # Verificați dacă rulează activitatea orchestratorului     $task = Get-ScheduledTask -TaskName "SecureBoot-Rollout-Orchestrator" -ErrorAction SilentlyContinue     dacă ($task) {         $taskState = $task. Stat         $color = dacă ($taskState -eq "Rulează") { "Verde" } elseif ($taskState -eq "Gata") { "Galben" } altceva { "Roșu" }         Write-Host "Activitate planificată: " -NoNewline         $color culoare Write-Host $taskState -prim plan     } altfel, {         Write-Host "Activitate planificată: " -NoNewline         Write-Host "Neinstalat" - Gri culoare prim plan     }     # Starea de încărcare a lansării     dacă (-nu (Test-Cale $rolloutStatePath)) {         Write-Host ""         Write-Host "Nu s-a găsit nicio stare de implementare.                Este posibil ca Orchestratorul să nu fi început încă." -Prim-planColor galben         Write-Host "Cale stare: $rolloutStatePath" - Gri gri prim plan         Reveni     }          $state = Get-Content $rolloutStatePath -Brut | ConvertFrom-Json | ConvertTo-Hashtable          Write-Host ""     Write-Host "PROGRES IMPLEMENTARE" - Culoare prim plan galben     Write-Host ("-" * 40)          $status = $state. Starea     $statusColor = comutator ($status) {         "Finalizat" { "Verde" }         "InProgress" { "Cyan" }         "NotStarted" { "Gri" }         { "Alb" } implicit     }          Write-Host "Stare: " -NoNewline     $statusColor culoare Write-Host $status -prim plan     Write-Host "Val curent: $($state. CurrentWave)"     Write-Host "Total audiență specifică: $($state. TotalDevicesTargeted)"     Write-Host "Total actualizat: $($state. TotalDevicesUpdated)"          dacă ($state. StartedAt) {         Write-Host "Început: $($state. StartedAt)"     }     dacă ($state. Ultima agregare) {         Write-Host "Ultimul cec: $($state. LastAggregation)"     }     dacă ($state. CompletedAt) {         Write-Host "Terminat: $($state. CompletedAt)" -Prim planColor Verde     }          # Afișați bara de progres     dacă ($state. TotalDevicesTargeted -gt 0) {         $pct = dacă ($state. TotalDevicesUpdated -și $state. TotalDevicesTargeted) {             [matematică]::Round(($state. TotalDevicesUpdated /$state. TotalDevicesTargeted) * 100, 1)         } altfel{ 0 }                  Write-Host ""         Write-Host "Progres: " -NoNewline         $barWidth = 40         $filled = [matematică]::Floor($barWidth * $pct / 100)         Write-Host "[" -NoNewline         Write-Host ("█" * $filled) -Prim-planColor verde -NoNewline         Write-Host ("░" * ($barWidth - $filled)) -Prim planColor DarkGray -NoNewline         Write-Host "] $pct%"     }          # Rezumat bucketuri blocate     if (Test-Cale $blockedBucketsPath) {         $blocked = Get-Content $blockedBucketsPath -Brut | ConvertFrom-Json | ConvertTo-Hashtable         dacă ($blocked. Count -gt 0) {             Write-Host ""             Write-Host "BUCKETURI BLOCATE: " -NoNewline -Culoare prim plan roșu             Write-Host "$($blocked. Contoare) bucketuri necesită atenție" -Prim planColor Roșu                          dacă ($ShowBlocked) {                 Write-Host ""                 pentru a căuta ($key în $blocked. Chei) {                     $info = $blocked[$key]                     Write-Host " ► $key" - Roșu prim plan                     Write-Host " Motiv: $($info. Motiv)" -Prim-planColor gri                     Write-Host " Dispozitiv: $($info. FailedDevice)" -Prim-planColor gri                     Write-Host " De la: $($info. BlockedAt)" -Prim-planColor gri                 }             } altfel, {                 Write-Host " Rulare cu -ShowBlocked pentru detalii" -Prim-planColor gri             }         }     }          # Istoric val     dacă ($ShowWaves și $state. WaveHistory -și $state. WaveHistory.Count -gt 0) {         Write-Host ""         Write-Host "ISTORICUL VALURILOR" -Prim planColor galben         Write-Host ("-" * 40)                  pentru a căuta ($wave în $state. WaveHistory) {             Write-Host "Wave $($wave. WaveNumber): " -NoNewline -Prim-planColor Cyan             Write-Host "$($wave. Dispozitive DeviceCount" -NoNewline             Write-Host " - $($wave. StartedAt)" -Prim-planColor gri         }     }          # Cel mai recent tablou de bord     $latestAggregation = Get-ChildItem -Cale $ReportBasePath -Director -Filtru "Aggregation_*" -ErrorAction SilentlyContinue |         nume Sort-Object -Descendent |         Select-Object -Primul 1          dacă ($latestAggregation) {         $dashboard = Get-ChildItem -Cale $latestAggregation.FullName -Filtru "*Tablou de bord*.html" -ErrorAction SilentlyContinue |             Select-Object -Primul 1                  dacă ($dashboard) {             Write-Host ""             Write-Host "CEL MAI RECENT TABLOU DE BORD" - Culoare prim plan galben             Write-Host $dashboard. FullName -Prim-planColor gri                          dacă ($OpenDashboard) {                 Start-Process $dashboard. Nume Complet             }         }     }          # Jurnal recent     dacă ($ShowLog) {         $logFile = Get-ChildItem -Cale $stateDir -Filtru "Orchestrator_*.log" -ErrorAction SilentlyContinue |             Sort-Object nume -Descendent |             Select-Object -Primul 1                  dacă ($logFile) {             Write-Host ""             Write-Host "JURNAL RECENT" -Prim-planColor galben             Write-Host ("-" * 40)                          Get-Content $logFile.FullName -Coada 20 | ForEach-Object {                 if ($_ -match '\[ERROR\]') {                     Write-Host $_ -Culoare prim plan roșu                 } elseif ($_ -match '\[WARN\]') {                     Write-Host $_ -Culoare prim plan galbenă                 } elseif ($_ -match '\[OK\]') {                     Write-Host $_ - Culoare prim plan                 } elseif ($_ -match '\[WAVE\]') {                     Write-Host $_ -Prim-planColor Cyan                 } altfel, {                     Write-Host $_ - Culoare gri prim plan                 }             }         }     }          Write-Host ""     Write-Host ("-" * 80) -Prim-planColor Gri închis          dacă (-nu $ShowLog -sau -not $ShowWaves -or -not $ShowBlocked) {         Write-Host "Opțiuni: -ShowLog | -ShowWaves | -Afișareblocat | -OpenDashboard | -Watch 30" -Prim-planColor DarkGray     } }

# ============================================================================ NR. PRINCIPAL # ============================================================================

if (-not (Test-Path $ReportBasePath)) {     Write-Host "Calea raportului nu s-a găsit: $ReportBasePath" -Culoare prim plan roșu     ieșire 1 }

if ($Watch -gt 0) {     Write-Host "Se urmărește starea la fiecare $Watch secunde. Apăsați Ctrl+C pentru a opri". -Prim-planColor Cyan     în timp ce ($true) {         Afișare stare         $Watch Start-Sleep -secunde     } } altfel, {     Afișare stare }  

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.