Αντιγράψτε και επικολλήστε αυτό το δείγμα δέσμης ενεργειών και τροποποιήστε το ανάλογα με τις ανάγκες σας για το περιβάλλον σας:

<# . ΣΎΝΟΨΗ     Εμφανίζει την τρέχουσα κατάσταση του ενορχηστρωτή κυκλοφορίας ασφαλούς εκκίνησης.

.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()] param(     [Parameter(Mandatory = $true)]     [συμβολοσειρά]$ReportBasePath,     [Parameter(Mandatory = $false)]     [switch]$ShowLog,     [Parameter(Mandatory = $false)]     [switch]$ShowBlocked,     [Parameter(Mandatory = $false)]     [switch]$ShowWaves,     [Parameter(Mandatory = $false)]     [int]$Watch = 0,     [Parameter(Mandatory = $false)]     [switch]$OpenDashboard )                         

$ErrorActionPreference = "Stop" $DownloadUrl = "https://aka.ms/getsecureboot" $DownloadSubPage = "Δείγματα ανάπτυξης και παρακολούθησης"

# Note: This script has no dependencies on other scripts. # Για το πλήρες πακέτο εργαλείων, κάντε λήψη από: $DownloadUrl -> $DownloadSubPage

# ============================================================================ ΣΥΝΑΡΤΉΣΕΙς # HELPER # ============================================================================

function ConvertTo-Hashtable {     param([Parameter(ValueFromPipeline = $true)]$InputObject)     διεργασία {         if ($null -eq $InputObject) { return @{} }         if ($InputObject -is [System.Collections.IDictionary]) { return $InputObject }         if ($InputObject -is [PSCustomObject]) {             $hash = @{}             foreach ($prop στο $InputObject.PSObject.Properties) {                 $hash[$prop. Name] = ConvertTo-Hashtable $prop. Τιμή             }             επιστροφή $hash         }         if ($InputObject -is [System.Collections.IEnumerable] -and $InputObject -isnot [string]) {             return @($InputObject | ForEach-Object { ConvertTo-Hashtable $_ })         }         επιστροφή $InputObject     } }

function Show-Status {     $stateDir = Join-Path $ReportBasePath "Κατάσταση παράδοσης"     $rolloutStatePath = Join-Path $stateDir "RolloutState.json"     $blockedBucketsPath = Join-Path $stateDir "BlockedBuckets.json"     Clear-Host     Write-Host ""     Write-Host ("=" * 80) -ForegroundColor Cyan     Write-Host " SECURE BOOT ROLLOUT STATUS" -ForegroundColor Cyan     Write-Host " $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" -ForegroundColor Gray     Write-Host ("=" * 80) -ForegroundColor Cyan     Write-Host ""     # Ελέγξτε αν εκτελείται η εργασία του ενορχηστρωτή     $task = Get-ScheduledTask -Όνομα_εργασίας "SecureBoot-Rollout-Orchestrator" -ErrorAction SilentlyContinue     if ($task) {         $taskState = $task. Κράτος         $color = if ($taskState -eq "Running") { "Green" } elseif ($taskState -eq "Ready") { "Yellow" } else { "Red" }         Write-Host "Προγραμματισμένη εργασία: " -NoNewline         Write-Host $taskState -$color ForegroundColor     } άλλος {         Write-Host "Προγραμματισμένη εργασία: " -NoNewline         Write-Host "Δεν έχει εγκατασταθεί" -Γκρι χρώμα πρώτου πλάνου     }     # Load rollout state (Φόρτωση κατάστασης παράδοσης)     if (-not (Test-Path $rolloutStatePath)) {         Write-Host ""         Write-Host "Δεν βρέθηκε κατάσταση παράδοσης.                Ο Orchestrator μπορεί να μην έχει ξεκινήσει ακόμα." -ForegroundColor Yellow         Write-Host "Διαδρομή κατάστασης: $rolloutStatePath" -ForegroundColor Gray         Επιστρέψει     }          $state = Get-Content $rolloutStatePath -Raw | ConvertFrom-Json | ConvertTo-Hashtable          Write-Host ""     Write-Host "ROLLOUT PROGRESS" -ForegroundColor Yellow     Write-Host ("-" * 40)          $status = $state. Κατάσταση     $statusColor = διακόπτης ($status) {         "Ολοκληρώθηκε" { "Πράσινο" }         "InProgress" { "Κυανό" }         "NotStarted" { "Gray" }         προεπιλογή { "Λευκό" }     }          Write-Host "Κατάσταση: " -NoNewline     Write-Host $status -$statusColor ForegroundColor     Write-Host "Τρέχον κύμα: $($state. CurrentWave)"     Write-Host "Συνολικός στόχος: $($state. TotalDevicesTargeted)"     Write-Host "Το σύνολο ενημερώθηκε: $($state. TotalDevicesUpdated)"          εάν ($state. StartedAt) {         Write-Host "Ξεκίνησε: $($state. StartedAt)"     }     εάν ($state. Τελευταία συνάθροιση) {         Write-Host "Τελευταίος έλεγχος: $($state. LastAggregation)"     }     εάν ($state. CompletedAt) {         Write-Host "Ολοκληρώθηκε: $($state. CompletedAt)" -ForegroundColor Green     }          # Εμφάνιση γραμμής προόδου     εάν ($state. TotalDevicesTargeted -gt 0) {         $pct = εάν ($state. TotalDevicesΑναχρονίστε και $state. TotalDevicesTargeted) {             [μαθηματικά]::Round(($state. TotalDevicesΑναχρονίστε / $state. TotalDevicesTargeted) * 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)) -ΠροσκήνιοΧρήση DarkGray -NoNewline         Write-Host "] $pct%"     }          Σύνοψη αποκλεισμένων κάδων     if (Test-Path $blockedBucketsPath) {         $blocked = Get-Content $blockedBucketsPath -Ακατέργαστο | ConvertFrom-Json | ConvertTo-Hashtable         εάν ($blocked. Count -gt 0) {             Write-Host ""             Write-Host "ΑΠΟΚΛΕΙΣΜΈΝΟΙ ΚΟΥΒΆΔΕς: " -NoNewline -ForegroundColor Κόκκινο             Write-Host "$($blocked. Count) buckets need attention" -ForegroundColor Red                          if ($ShowBlocked) {                 Write-Host ""                 foreach ($key στο $blocked. Πλήκτρα) {                     $info = $blocked[$key]                     Write-Host " ■ $key" -Χρώμα πρώτου πλάνου Κόκκινο                     Write-Host " Αιτία: $($info. Reason)" -ForegroundColor Gray                     Write-Host " Συσκευή: $($info. FailedDevice)" -ForegroundColor Gray                     Write-Host " Από: $($info. BlockedAt)" -ForegroundColor Gray                 }             } άλλος {                 Write-Host " Εκτέλεση με -ShowBlocked για λεπτομέρειες" -ForegroundColor Gray             }         }     }          # Ιστορικό κυμάτων     αν ($ShowWaves και $state. WaveHistory - και $state. WaveHistory.Count -gt 0) {         Write-Host ""         Write-Host "WAVE HISTORY" -ForegroundColor Yellow         Write-Host ("-" * 40)                  foreach ($wave στο $state. WaveHistory) {             Write-Host "Κύμα $($wave. WaveNumber): " -NoNewline -ForegroundColor Cyan             Write-Host "$($wave. DeviceCount) devices" -NoNewline             Write-Host " - $($wave. StartedAt)" -ForegroundColor Gray         }     }          # Πιο πρόσφατος πίνακας εργαλείων     $latestAggregation = Get-ChildItem -Διαδρομή $ReportBasePath -Κατάλογος -Φιλτράρισμα "Aggregation_*" -ErrorAction SilentlyContinue |         Sort-Object Όνομα - Φθίνουσα |         Select-Object -Πρώτα 1          if ($latestAggregation) {         $dashboard = Get-ChildItem -Διαδρομή $latestAggregation.FullName -Φιλτράρισμα "*Dashboard*.html" -ErrorAction SilentlyContinue |             Select-Object -Πρώτα 1                  if ($dashboard) {             Write-Host ""             Write-Host "LATEST DASHBOARD" -ForegroundColor Yellow             Write-Host $dashboard. FullName -ForegroundColor Gray                          if ($OpenDashboard) {                 Start-Process $dashboard. Ονοματεπώνυμο             }         }     }          # Πρόσφατο αρχείο καταγραφής     if ($ShowLog) {         $logFile = Get-ChildItem -Διαδρομή $stateDir -Φιλτράρισμα "Orchestrator_*.log" -ErrorAction SilentlyContinue |             Sort-Object Όνομα - Φθίνουσα |             Select-Object -Πρώτα 1                  εάν ($logFile) {             Write-Host ""             Write-Host "RECENT LOG" -Κίτρινο χρώμα πρώτου πλάνου             Write-Host ("-" * 40)                          Get-Content $logFile.Ονοματεπώνυμο -Ουρά 20 | ForEach-Object {                 if ($_ -match '\[ERROR\]]') {                     Write-Host $_ -Πρώτο πλάνοΧρήση Κόκκινο                 } elseif ($_ -match '\[WARN\]') {                     Write-Host $_ -ForegroundColor Yellow                 } elseif ($_ -match '\[OK\]') {                     Write-Host $_ -ForegroundColor Green                 } elseif ($_ -match '\[WAVE\]') {                     Write-Host $_ -ForegroundColor Cyan                 } άλλος {                     Write-Host $_ -ForegroundColor Gray                 }             }         }     }          Write-Host ""     Write-Host ("-" * 80) -Πρώτο πλάνοΧρήση DarkGray          if (-not $ShowLog -or -not $ShowWaves -or -not $ShowBlocked) {         Write-Host "Επιλογές: -ShowLog | -ShowWaves | -ShowBlocked | -OpenDashboard | -Watch 30" -ForegroundColor DarkGray     } }

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

if (-not (Test-Path $ReportBasePath)) {     Write-Host "Η διαδρομή αναφοράς δεν βρέθηκε: $ReportBasePath" -Χρώμα πρώτου πλάνου Κόκκινο     έξοδος 1 }

if ($Watch -gt 0) {     Write-Host "Παρακολούθηση κατάστασης κάθε $Watch δευτερόλεπτα. Πατήστε το συνδυασμό πλήκτρων Ctrl+C για διακοπή." -ForegroundColor Cyan     ενώ ($true) {         Εμφάνιση κατάστασης         Start-Sleep -Δευτερόλεπτα $Watch     } } άλλος {     Εμφάνιση κατάστασης }  

Χρειάζεστε περισσότερη βοήθεια;

Θέλετε περισσότερες επιλογές;

Εξερευνήστε τα πλεονεκτήματα της συνδρομής, περιηγηθείτε σε εκπαιδευτικά σεμινάρια, μάθετε πώς μπορείτε να προστατεύσετε τη συσκευή σας και πολλά άλλα.