Kopieer en plak dit voorbeeldscript en wijzig deze indien nodig voor uw omgeving:

<# . SYNOPSIS     Toont de huidige status van de orchestrator voor de secure boot-implementatie.

.DESCRIPTION     Biedt realtime inzicht in de voortgang van de implementatie:     - Huidige golfnummer en apparaten gericht     - Apparaten bijgewerkt versus in behandeling     - Geblokkeerde buckets die aandacht vereisen     - Recent activiteitenlogboek     - Dashboardkoppeling     Voer dit op elk gewenst moment uit om te zien hoe de implementatie vordert.     

.PARAMETER ReportBasePath     Pad naar de rapport-/statusmap die wordt gebruikt door de orchestrator

.PARAMETER ShowLog     Recente logboekvermeldingen weergeven (laatste 50 regels)

.PARAMETER ShowBlocked     Details van geblokkeerde buckets weergeven

.PARAMETER ShowWaves     Golfgeschiedenis weergeven met apparaataantallen

.PARAMETER Watch     Status continu elke N seconden vernieuwen

.PARAMETER OpenDashboard     Het meest recente HTML-dashboard openen in de 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(     [Parameter(Verplicht = $true)]     [tekenreeks]$ReportBasePath,     [Parameter(Verplicht = $false)]     [switch]$ShowLog,     [Parameter(Verplicht = $false)]     [switch]$ShowBlocked,     [Parameter(Verplicht = $false)]     [switch]$ShowWaves,     [Parameter(Verplicht = $false)]     [int]$Watch = 0,     [Parameter(Verplicht = $false)]     [switch]$OpenDashboard )                         

$ErrorActionPreference = "Stop" $DownloadUrl = "https://aka.ms/getsecureboot" $DownloadSubPage = "Implementatie- en bewakingsvoorbeelden"

# Note: This script has no dependencies on other scripts. # Download voor de volledige toolset van: $DownloadUrl -> $DownloadSubPage

# ============================================================================ # HELPER-FUNCTIES # ============================================================================

function ConvertTo-Hashtable {     param([Parameter(ValueFromPipeline = $true)]$InputObject)     proces {         if ($null -eq $InputObject) { return @{} }         if ($InputObject -is [System.Collections.IDictionary]) { return $InputObject }         if ($InputObject -is [PSCustomObject]) {             $hash = @{}             foreach ($prop in $InputObject.PSObject.Properties) {                 $hash[$prop. Naam] = ConvertTo-Hashtable $prop. Waarde             }             $hash retourneren         }         if ($InputObject -is [System.Collections.IEnumerable] -and $InputObject -isnot [string]) {             retourneer @($InputObject | ForEach-Object { ConvertTo-Hashtable $_ })         }         $InputObject retourneren     } }

function Show-Status {     $stateDir = Join-Path $ReportBasePath "RolloutState"     $rolloutStatePath = Join-Path $stateDir 'RolloutState.json'     $blockedBucketsPath = Join-Path $stateDir 'BlockedBuckets.json'     Clear-Host     Write-Host ""     Write-Host ("=" * 80) -ForegroundColor Cyan     Write-Host STATUS VAN SECURE BOOT ROLLOUT -ForegroundColor Cyan     Write-Host " $(Get-Date -Format 'jjjj-MM-dd UU:mm:ss')" -ForegroundColor Gray     Write-Host ("=" * 80) -ForegroundColor Cyan     Write-Host ""     # Controleer of de orchestratortaak wordt uitgevoerd     $task = Get-ScheduledTask -TaskName "SecureBoot-Rollout-Orchestrator" -ErrorAction SilentlyContinue     if ($task) {         $taskState = $task. Staat         $color = if ($taskState -eq "Running") { "Green" } elseif ($taskState -eq "Ready") { "Yellow" } else { "Red" }         Write-Host "Geplande taak: " -GeenNieuwe regel         Write-Host $taskState -ForegroundColor $color     } else {         Write-Host "Geplande taak: " -GeenNieuwe regel         Write-Host 'Niet geïnstalleerd' -ForegroundColor Gray     }     # Implementatiestatus laden     if (-not (testpad $rolloutStatePath)) {         Write-Host ""         Write-Host 'Geen implementatiestatus gevonden.                Orchestrator is mogelijk nog niet gestart." -ForegroundColor Yellow         Write-Host 'State path: $rolloutStatePath' -ForegroundColor Gray         Terug     }          $state = Get-Content $rolloutStatePath -Raw | ConvertFrom-Json | ConvertTo-Hashtable          Write-Host ""     Write-Host "VOORTGANG VAN IMPLEMENTATIE" -VoorgrondKleur Geel     Write-Host ("-" * 40)          $status = $state. Status     $statusColor = schakelaar ($status) {         "Voltooid" { "Groen" }         "InProgress" { "Cyaan" }         "NotStarted" { "Gray" }         standaard { "Wit" }     }          Write-Host "Status: " -NoNewline     Write-Host $status -ForegroundColor $statusColor     Write-Host Huidige golf: $($state. CurrentWave)"     Write-Host "Totaal gericht: $($state. TotalDevicesTargeted)"     Write-Host 'Totaal bijgewerkt: $($state. TotalDevicesUpdated)"          if ($state. StartedAt) {         Write-Host 'Gestart: $($state. StartedAt)"     }     if ($state. LastAggregation) {         Write-Host 'Laatste cheque: $($state. LastAggregation)"     }     if ($state. CompletedAt) {         Write-Host voltooid: $($state. CompletedAt)" -ForegroundColor Green     }          # Voortgangsbalk weergeven     if ($state. TotalDevicesTargeted -gt 0) {         $pct = if ($state. TotalDevicesUpdated -en $state. TotalDevicesTargeted) {             [wiskunde]::Round(($state. TotalDevicesUpdated/$state. TotalDevicesTargeted) * 100, 1)         } anders { 0 }                  Write-Host ""         Write-Host "Voortgang: " -NoNewline         $barWidth = 40         $filled = [wiskunde]::Floor($barWidth * $pct / 100)         Write-Host "[" -NoNewline         Write-Host ("█" * $filled) -ForegroundColor Green -NoNewline         Write-Host ("░" * ($barWidth - $filled)) -ForegroundColor DarkGray -NoNewline         Write-Host "] $pct%"     }          Overzicht van # Geblokkeerde buckets     if (testpad $blockedBucketsPath) {         $blocked = Get-Content $blockedBucketsPath -Raw | ConvertFrom-Json | ConvertTo-Hashtable         if ($blocked. Aantal -gt 0) {             Write-Host ""             Write-Host "BLOCKED BUCKETS: " -NoNewline -ForegroundColor Red             Write-Host $($blocked. Aantal) buckets hebben aandacht nodig" -ForegroundColor Red                          if ($ShowBlocked) {                 Write-Host ""                 foreach ($key in $blocked. Sleutels) {                     $info = $blocked[$key]                     Write-Host " ► $key" -VoorgrondKleur Rood                     Write-Host " Reden: $($info. Reden)" -VoorgrondKleur Grijs                     Write-Host " Apparaat: $($info. FailedDevice)" -ForegroundColor Gray                     Write-Host " Sinds: $($info. BlockedAt)" -ForegroundColor Gray                 }             } else {                 Write-Host 'Uitvoeren met -ShowBlocked voor details' -ForegroundColor Gray             }         }     }          # Golfgeschiedenis     if ($ShowWaves -en $state. WaveHistory -en $state. WaveHistory.Count -gt 0) {         Write-Host ""         Write-Host "WAVE HISTORY" -ForegroundColor Yellow         Write-Host ("-" * 40)                  foreach ($wave in $state. WaveHistory) {             Write-Host "Wave $($wave. WaveNumber): " -NoNewline -ForegroundColor Cyan             Write-Host $($wave. DeviceCount) apparaten" -NoNewline             Write-Host " - $($wave. StartedAt)" -ForegroundColor Gray         }     }          # Meest recente dashboard     $latestAggregation = Get-ChildItem -Path $ReportBasePath -Directory -Filter "Aggregation_*" -ErrorAction SilentlyContinue |         Sort-Object naam - aflopend |         Select-Object -Eerste 1          if ($latestAggregation) {         $dashboard = Get-ChildItem -Path $latestAggregation.FullName -Filter "*Dashboard*.html" -ErrorAction SilentlyContinue |             Select-Object - Eerste 1                  if ($dashboard) {             Write-Host ""             Write-Host 'LAATSTE DASHBOARD' -VoorgrondKleur Geel             Write-Host $dashboard. FullName -ForegroundColor Gray                          if ($OpenDashboard) {                 Start-Process $dashboard. Fullname             }         }     }          # Recent logboek     if ($ShowLog) {         $logFile = Get-ChildItem -Path $stateDir -Filter "Orchestrator_*.log" -ErrorAction SilentlyContinue |             Sort-Object naam - aflopend |             Select-Object - Eerste 1                  if ($logFile) {             Write-Host ""             Write-Host "RECENT LOGBOEK" -ForegroundColor Yellow             Write-Host ("-" * 40)                          Get-Content $logFile.FullName -Tail 20 | ForEach-Object {                 if ($_ -match '\[ERROR\]') {                     Write-Host $_ -ForegroundColor Red                 } elseif ($_ -match '\[WARN\]') {                     Write-Host $_ -ForegroundColor Yellow                 } elseif ($_ -match '\[OK\]') {                     Write-Host $_ -ForegroundColor Green                 } elseif ($_ -match '\[WAVE\]') {                     Write-Host $_ -ForegroundColor Cyan                 } else {                     Write-Host $_ -ForegroundColor Gray                 }             }         }     }          Write-Host ""     Write-Host ("-" * 80) -ForegroundColor DarkGray          indien (-niet $ShowLog -of -niet $ShowWaves -of -niet $ShowBlocked) {         Write-Host "Opties: -ShowLog | -ShowWaves | -ShowBlocked | -OpenDashboard | -Watch 30" -ForegroundColor DarkGray     } }

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

if (-not (Test-Path $ReportBasePath)) {     Write-Host 'Rapportpad niet gevonden: $ReportBasePath' -ForegroundColor Red     afsluiten 1 }

if ($Watch -gt 0) {     Write-Host 'Status elke $Watch seconden bekijken. Druk op Ctrl+C om te stoppen." -ForegroundColor Cyan     while ($true) {         Show-Status         Start-Sleep -Seconden $Watch     } } else {     Show-Status }  

Meer hulp nodig?

Meer opties?

Verken abonnementsvoordelen, blader door trainingscursussen, leer hoe u uw apparaat kunt beveiligen en meer.