Nukopijuokite ir įklijuokite šį scenarijaus pavyzdį ir modifikuokite, kiek reikia jūsų aplinkai:

<# . ANOTACIJA     Rodo dabartinę saugiosios įkrovos diegimo valdymo modulio būseną.

.DESCRIPTION     Suteikia galimybę realiuoju laiku matyti diegimo eigą:     - Dabartinis bangų skaičius ir įrenginiai tikslinį     - Įrenginiai atnaujinti ir laukiantys     - Užblokuotos talpyklos, į kurias reikia atkreipti dėmesį     - Naujausios veiklos žurnalas     - Ataskaitų srities saitas     Paleiskite šią funkciją bet kuriuo metu, kad pamatytumėte, kaip vykdomas diegimas.     

.PARAMETER ReportBasePath     Kelias į ataskaitų / būsenų katalogą, kurį naudoja valdymo modulis

.PARAMETER ShowLog     Rodyti naujausius žurnalo įrašus (paskutinės 50 eilučių)

.PARAMETER ShowBlocked     Rodyti informaciją apie užblokuotas talpyklas

.PARAMETER ShowWaves     Rodyti bangų istoriją su įrenginių skaičiais

.PARAMETER Watch     Nuolat atnaujinti būseną kas N sekundes

.PARAMETER OpenDashboard     Atidaryti naujausią HTML ataskaitų sritį naršyklėje

.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(     [Parametras(Privalomas = $true)]     [eilutė]$ReportBasePath,     [Parametras(Privalomas = $false)]     [jungiklis]$ShowLog,     [Parametras(Privalomas = $false)]     [jungiklis]$ShowBlocked,     [Parametras(Privalomas = $false)]     [jungiklis]$ShowWaves,     [Parametras(Privalomas = $false)]     [sveikasis skaičius]$Watch = 0,     [Parametras(Privalomas = $false)]     [jungiklis]$OpenDashboard )                         

$ErrorActionPreference = "Stop" $DownloadUrl = "https://aka.ms/getsecureboot" $DownloadSubPage = "Diegimo ir stebėjimo pavyzdžiai"

# Note: This script has no dependencies on other scripts. # Viso įrankių rinkinio atsisiuntimas iš: $DownloadUrl -> $DownloadSubPage

# ============================================================================ # PAGALBININKAS FUNKCIJOS # ============================================================================

function ConvertTo-Hashtable {     param([Parameter(ValueFromPipeline = $true)]$InputObject)     procesas {         jei ($null -eq $InputObject) { return @{} }         jei ($InputObject -is [System.Collections.IDictionary]) { return $InputObject }         jei ($InputObject -is [PSCustomObject]) {             $hash = @{}             foreach ($prop in $InputObject.PSObject.Properties) {                 $hash[$prop. Pavadinimas] = ConvertTo-Hashtable $prop. Vertė             }             grąžinimo $hash         }         jei ($InputObject - yra [System.Collections.IEnumerable] -and $InputObject -isnot [string]) {             return @($InputObject | ForEach-Object { ConvertTo-Hashtable $_ })         }         grąžinimo $InputObject     } }

function Show-Status {     $stateDir = Join-Path $ReportBasePath "RolloutState"     $rolloutStatePath = Join-Path $stateDir "RolloutState.json"     $blockedBucketsPath = Join-Path $stateDir "BlockedBuckets.json"     Valyti pagrindinį kompiuterį     Write-Host     Write-Host ("=" * 80) - Priekinio planopalva žydra     Write-Host " SECURE BOOT ROLLOUT STATUS" -ForegroundColor Cyan     Write-Host " $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" -Priekinio planopalva Pilka     Write-Host ("=" * 80) - Priekinio plano spalvos žydra     Write-Host "     # Patikrinkite, ar veikia valdymo modulio užduotis     $task = Get-ScheduledTask -TaskName "SecureBoot-Rollout-Orchestrator" -ErrorAction SilentlyContinue     jei ($task) {         $taskState = $task. Valstybės         $color = if ($taskState -eq "Running") { "Green" } elseif ($taskState -eq "Ready") { "Yellow" } else { "Red" }         Write-Host "Suplanuota užduotis: " -NoNewline         Write-Host $taskState -ForegroundColor $color     } dar {         Write-Host "Suplanuota užduotis: " -NoNewline         Write-Host "Neįdiegta" – priekinio planopalva pilka     }     # Įkėlimo diegimo būsena     jei (-not (testo kelias $rolloutStatePath)) {         Write-Host         Write-Host "Nepavyko rasti diegimo būsenos.                Gali būti, kad valdymo modulis dar nepradėta." -ForegroundColor Yellow         Write-Host "State path: $rolloutStatePath" (būsenos kelias: $rolloutStatePath) – pilka priekinio plano spalva         Grįžti     }          $state = Get-Content $rolloutStatePath -Neapdorota | ConvertFrom-Json | Konvertuoti į maišos lentelę          Write-Host "     Write-Host "ROLLOUT PROGRESS" – geltona priekinio plano spalva     Write-Host ("-" * 40)          $status = $state. Būsena     $statusColor = jungiklis ($status) {         "Completed" { "Green" }         "InProgress" { "Cyan" }         "NotStarted" { "Gray" }         numatytoji reikšmė { "Baltas" }     }          Write-Host "Būsena: " -NoNewline     Write-Host $status -ForegroundColor $statusColor     Write-Host "Dabartinė banga: $($state. CurrentWave)"     Write-Host "Total Targeted: $($state. TotalDevicesTargeted)"     Write-Host "Iš viso atnaujinta: $($state. TotalDevicesUpdated)"          jei ($state. StartedAt) {         Write-Host "Pradėta: $($state. "StartedAt")"     }     jei ($state. LastAggregation) {         Write-Host "Paskutinis tikrinimas: $($state. LastAggregation)"     }     jei ($state. UžbaigtaAt) {         Write-Host "Baigta: $($state. CompletedAt)" -Priekinio planopalva Žalia     }          # Rodyti eigos juostą     jei ($state. TotalDevicesTargeted -gt 0) {         $pct = if ($state. TotalDevicesUpdated – ir $state. TotalDevicesTargeted) {             [matematika]::Round(($state. TotalDevicesUpdated / $state. TotalDevicesTargeted) * 100, 1)         Dar } { 0 }                  Write-Host         Write-Host "Eiga: " -NoNewline         $barWidth = 40         $filled = [matematika]::Floor($barWidth * $pct / 100)         Write-Host "[" -NoNewline         Write-Host (█* $filled) -Priekinio planopalva žalia -NoNewline         Write-Host (░" * ($barWidth - $filled)) -Priekinio planopalva DarkGray -NoNewline         Write-Host $pct%"     }          # užblokuotų talpyklų suvestinė     if (Test-Path $blockedBucketsPath) {         $blocked = Get-Content $blockedBucketsPath -Neapdorota | ConvertFrom-Json | Konvertuoti į maišos lentelę         jei ($blocked. Skaičiavimas -gt 0) {             Write-Host             Write-Host "UŽBLOKUOTOS TALPYKLOS: " -NoNewline -Priekinio planopalva raudona             Write-Host "$($blocked. Count) kibirai reikia dėmesio" -Priekinio planoColor Raudona                          jei ($ShowBlocked) {                 Write-Host ""                 ($key $blocked. Klavišai) {                     $info = $blocked[$key]                     Write-Host " ► $key" - Priekinio plano spalva Raudona                     Write-Host " Priežastis: $($info. Reason)" -Priekinio planopalva pilka                     Write-Host " Įrenginys: $($info. FailedDevice)" -Priekinio planopalva pilka                     Write-Host " Nuo: $($info. BlockedAt)" -Priekinio planopalva pilka                 }             } dar {                 Write-Host " Run with -ShowBlocked for details" -ForegroundColor Gray             }         }     }          # Bangų istorija     jei ($ShowWaves ir $state. WaveHistory ir $state. WaveHistory.Count -gt 0) {         Write-Host         Write-Host "WAVE HISTORY" – geltona priekinio plano spalva         Write-Host ("-" * 40)                  ($wave $state. WaveHistory) {             Write-Host "Wave $($wave. WaveNumber): " -NoNewline -ForegroundColor Cyan             Write-Host "$($wave. DeviceCount) įrenginiai" -NoNewline             Write-Host " - $($wave. StartedAt)" -Priekinio planopalva pilka         }     }          # Naujausia ataskaitų sritis     $latestAggregation = Get-ChildItem -Path $ReportBasePath -Directory -Filter "Aggregation_*" -ErrorAction SilentlyContinue |         Sort-Object pavadinimas – mažėjimo tvarka |         Select-Object – pirmas 1          jei ($latestAggregation) {         $dashboard = Get-ChildItem -Path $latestAggregation.FullName -Filter "*Dashboard*.html" -ErrorAction SilentlyContinue |             Select-Object – 1          pirmas         jei ($dashboard) {             Write-Host             Write-Host "NAUJAUSIA ATASKAITŲ SRITIS" – priekinio planopalva geltona             Write-Host $dashboard. FullName – priekinio planopalva pilka                          jei ($OpenDashboard) {                 Start-Process $dashboard. Vardas ir pavardė             }         }     }          # Naujausias žurnalas     jei ($ShowLog) {         $logFile = Get-ChildItem -Path $stateDir -Filter "Orchestrator_*.log" -ErrorAction SilentlyContinue |             Sort-Object pavadinimas – mažėjimo tvarka |             Select-Object 1          pirmas         jei ($logFile) {             Write-Host             Write-Host "RECENT LOG" –Priekinio planopalva geltona             Write-Host ("-" * 40)                          Get-Content $logFile.FullName - Tail 20 | ForEach-Object {                 jei ($_ -match '\[ERROR\]') {                     Write-Host $_ -Priekinio planopalva raudona                 } elseif ($_ -match '\[WARN\]') {                     Write-Host $_ -Priekinio planopalva geltona                 } elseif ($_ -match '\[OK\]') {                     Write-Host $_ -ForegroundColor Green                 } elseif ($_ -match '\[WAVE\]') {                     Write-Host $_ -ForegroundColor Cyan                 } dar {                     Write-Host $_ -Priekinio planopalva pilka                 }             }         }     }          Write-Host     Write-Host ("-" * 80) - Priekinio planopalva DarkGray          jei (-not $ShowLog -or -not $ShowWaves -or -not $ShowBlocked) {         Write-Host "Parinktys: -ShowLog | -"ShowWaves" | -Atblokuota | -OpenDashboard | -Žiūrėti 30" - Priekinio planoColor DarkGray     } }

# ============================================================================ # MAIN # ============================================================================

if (-not (Test-Path $ReportBasePath)) {     Write-Host "Ataskaitos kelias nerastas: $ReportBasePath" – priekinio planopalva raudona     išeiti iš 1 }

if ($Watch -gt 0) {     Write-Host "Watching status every $Watch seconds. Paspauskite Ctrl + C, kad sustabdytumėte." -ForegroundColor Cyan     o ($true) {         Rodyti būseną         Start-Sleep – $Watch sekundės     } } dar {     Rodyti būseną }  

Reikia daugiau pagalbos?

Norite daugiau parinkčių?

Sužinokite apie prenumeratos pranašumus, peržiūrėkite mokymo kursus, sužinokite, kaip apsaugoti savo įrenginį ir kt.