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

<# . ΣΎΝΟΨΗ     Αναπτύσσει το Secure Boot Rollout Orchestrator ως προγραμματισμένη εργασία των Windows.

.DESCRIPTION     Δημιουργεί μια προγραμματισμένη εργασία που εκτελεί συνεχώς τον ενορχηστρωτή στο παρασκήνιο.Η εργασία εκτελείται με την πολιτική εκτέλεσης παράκαμψης, ώστε να μην εμφανίζονται μηνύματα ασφαλείας.     Ο ενορχηστρωτής:     - Ψηφοφορία για ενημερώσεις συσκευής στο καθορισμένο χρονικό διάστημα     - Δημιουργεί αυτόματα κύματα και αναπτύσσει GPO     - Συνεχίστε μέχρι να ενημερωθούν      όλες οι κατάλληλες συσκευές     Παρακολούθηση της προόδου με τη χρήση: Get-SecureBootRolloutStatus.ps1

.PARAMETER AggregationInputPath     Διαδρομή UNC προς δεδομένα συσκευής JSON (από το GPO εντοπισμού)

.PARAMETER ReportBasePath     Τοπική διαδρομή για αναφορές και κρατικά αρχεία

.PARAMETER TargetOU     OU για τη σύνδεση GPO (προαιρετικό - προεπιλογές στη ρίζα τομέα)

.PARAMETER PollIntervalMinutes     Λεπτά μεταξύ ελέγχων κατάστασης. Προεπιλογή: 30

.PARAMETER UseWinCS     Χρησιμοποιήστε το WinCS (Σύστημα ρύθμισης παραμέτρων των Windows) αντί για το GPO AvailableUpdatesPolicy.Όταν είναι ενεργοποιημένη, αναπτύσσει WinCsFlags.exe προγραμματισμένη εργασία σε τελικά σημεία αντί για το αντικείμενο πολιτικής ομάδας (GPO) μητρώου.

.PARAMETER WinCSKey     Το πλήκτρο WinCS για τη ρύθμιση παραμέτρων ασφαλούς εκκίνησης. Προεπιλογή: F33E0C8E002

.PARAMETER ServiceAccount     Λογαριασμός για την εκτέλεση της εργασίας. Προεπιλογή: ΣΥΣΤΗΜΑ     Για λειτουργίες τομέα, χρησιμοποιήστε ένα λογαριασμό υπηρεσίας διαχείρισης τομέα.

.PARAMETER ScriptPath     Διαδρομή για το σενάριο του ενορχηστρωτή. Προεπιλογή: Ίδιος φάκελος με αυτήν τη δέσμη ενεργειών.

.PARAMETER Uninstall     Κατάργηση της προγραμματισμένης εργασίας

.EXAMPLE     .\Deploy-OrchestratorTask.ps1 -AggregationInputPath "\\server\SecureBootData$" -ReportBasePath "C:\SecureBootReports" -ServiceAccount "DOMAIN\svc_secureboot"

.EXAMPLE     .\Deploy-OrchestratorTask.ps1 -AggregationInputPath "\\server\SecureBootData$" -ReportBasePath "C:\SecureBootReports"

.EXAMPLE     # Ανάπτυξη με χρήση της μεθόδου WinCS αντί της availableUpdatesPolicy     .\Deploy-OrchestratorTask.ps1 -AggregationInputPath "\\server\SecureBootData$" -ReportBasePath "C:\SecureBootReports" -UseWinCS

.EXAMPLE     .\Deploy-OrchestratorTask.ps1 -Κατάργηση εγκατάστασης #>

[CmdletBinding()] param(     [Parameter(Mandatory = $false)]     [συμβολοσειρά]$AggregationInputPath,     [Parameter(Mandatory = $false)]     [συμβολοσειρά]$ReportBasePath,     [Parameter(Mandatory = $false)]     [συμβολοσειρά]$TargetOU,     [Parameter(Mandatory = $false)]     [int]$PollIntervalMinutes = 30,     [Parameter(Mandatory = $false)]     [switch]$UseWinCS,     [Parameter(Mandatory = $false)]     [string]$WinCSKey = "F33E0C8E002",     [Parameter(Mandatory = $false)]     [string]$ServiceAccount = "SYSTEM",     [Parameter(Mandatory = $false)]     [συμβολοσειρά]$ScriptPath,     [Parameter(Mandatory = $false)]     [switch]$Uninstall )                                        

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

# ============================================================================ # ΕΠΙΚΎΡΩΣΗ ΕΞΑΡΤΉΣΕΩΝ # ============================================================================

function Test-ScriptDependencies {     <#     . ΣΎΝΟΨΗ         Επικυρώνει ότι υπάρχουν όλες οι απαιτούμενες δέσμες ενεργειών.. ΠΕΡΙΓΡΑΦΉ         Ελέγχει για απαιτούμενες εξαρτήσεις δέσμης ενεργειών και παρέχει οδηγίες λήψης, εάν λείπουν.#>     param(         [Parameter(Mandatory = $true)]         [συμβολοσειρά]$ScriptDirectory,                  [Parameter(Mandatory = $true)]         [συμβολοσειρά[]]$RequiredScripts     )          $missingScripts = @()          foreach ($script στο $RequiredScripts) {         $scriptPath = Join-Path $ScriptDirectory $script         if (-not (Test-Path $scriptPath)) {             $missingScripts += $script         }     }          if ($missingScripts.Count -gt 0) {         Write-Host ""         Write-Host ("=" * 70) -Χρώμα πρώτου πλάνου Κόκκινο         Write-Host " MISSING DEPENDENCIES" -ForegroundColor Red         Write-Host ("=" * 70) -Χρώμα πρώτου πλάνου Κόκκινο         Write-Host ""         Write-Host "Δεν βρέθηκαν οι ακόλουθες απαιτούμενες δέσμες ενεργειών:" -ForegroundColor Yellow         foreach ($script στο $missingScripts) {             Write-Host " - $script" -Χρώμα πρώτου πλάνου Λευκό         }         Write-Host ""         Write-Host "Κατεβάστε τις πιο πρόσφατες δέσμες ενεργειών από:" -ForegroundColor Cyan         Write-Host " URL: $DownloadUrl" -ForegroundColor White         Write-Host " Μεταβείτε στο: '$DownloadSubPage'" -Χρώμα πρώτου πλάνου Λευκό         Write-Host ""         Write-Host "Εξαγάγετε όλες τις δέσμες ενεργειών στον ίδιο κατάλογο και εκτελέστε ξανά." -ForegroundColor Yellow         Write-Host ""         επιστροφή $false     }          επιστροφή $true }

# Required scripts for orchestrator deployment $requiredScripts = @(     "Start-SecureBootRolloutOrchestrator.ps1",     "Aggregate-SecureBootData.ps1",     "Deploy-GPO-SecureBootCollection.ps1",     "Detect-SecureBootCertUpdateStatus.ps1",     "Get-SecureBootRolloutStatus.ps1",     "Enable-SecureBootUpdateTask.ps1" )

if (-not (Test-ScriptDependencies -ScriptDirectory $PSScriptRoot -RequiredScripts $requiredScripts)) {     έξοδος 1 }

# ============================================================================ # UNINSTALL (ΚΑΤΆΡΓΗΣΗ ΕΓΚΑΤΆΣΤΑΣΗς) # ============================================================================

if ($Uninstall) {     Write-Host ""     Write-Host "Κατάργηση προγραμματισμένης εργασίας: $TaskName" -Χρώμα πρώτου πλάνου Κίτρινο     $existingTask = Get-ScheduledTask -Όνομα_εργασίας $TaskName -ErrorAction SilentlyContinue     if ($existingTask) {         Stop-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue         Unregister-ScheduledTask -Όνομα_εργασίας $TaskName -Επιβεβαίωση:$false         Write-Host "Η εργασία καταργήθηκε με επιτυχία." -ForegroundColor Green     } άλλος {         Write-Host "Η εργασία δεν βρέθηκε". -Χρώμα πρώτου πλάνου Γκρι     }     έξοδος 0 }     

# ============================================================================ # ΕΠΙΚΎΡΩΣΗ # ============================================================================

if (-not $AggregationInputPath -or -not $ReportBasePath) {     Write-Host "ΣΦΑΛΜΑ: -AggregationInputPath and -ReportBasePath are required." -ForegroundColor Red     Write-Host ""     Write-Host "Example:" -ForegroundColor Yellow     Write-Host ' .\Deploy-OrchestratorTask.ps1 -AggregationInputPath "\\server\SecureBootData$" -ReportBasePath "C:\SecureBootReports"'     έξοδος 1 }

# Find orchestrator script if (-not $ScriptPath) {     $ScriptPath = Join-Path $PSScriptRoot "Start-SecureBootRolloutOrchestrator.ps1" }

if (-not (Test-Path $ScriptPath)) {     Write-Host "ΣΦΑΛΜΑ: Η δέσμη ενεργειών Orchestrator δεν βρέθηκε: $ScriptPath" -ForegroundColor Red     έξοδος 1 }

# Find aggregation script (needed by orchestrator) $aggregateScript = Join-Path $PSScriptRoot "Aggregate-SecureBootData.ps1" if (-not (Test-Path $aggregateScript)) {     Write-Host "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Aggregate-SecureBootData.ps1 δεν βρέθηκε στον κατάλογο δέσμης ενεργειών" -ForegroundColor Yellow     Write-Host " Το Orchestrator μπορεί να αποτύχει εάν δεν μπορεί να βρει αυτό το σενάριο." -ForegroundColor Yellow }

Write-Host "" Write-Host ("=" * 70) -ForegroundColor Cyan Write-Host " Secure Boot Rollout Orchestrator - Task Deployment" -ForegroundColor Cyan Write-Host ("=" * 70) -ForegroundColor Cyan Write-Host ""

# For display, show relative paths (script names only) $displayScriptPath = Split-Path $ScriptPath -Φύλλο

Write-Host "Configuration:" -ForegroundColor Yellow Write-Host " Όνομα εργασίας: $TaskName" Write-Host " Orchestrator: $displayScriptPath" Write-Host " Διαδρομή εισόδου: $AggregationInputPath" Write-Host " Διαδρομή αναφοράς: $ReportBasePath" Write-Host " Target OU: $(if ($TargetOU) { $TargetOU } else { '(domain root)' })" Write-Host " Χρονικό διάστημα ψηφοφορίας: $PollIntervalMinutes λεπτά" Write-Host " Λογαριασμός υπηρεσίας: $ServiceAccount" Write-Host " Μέθοδος ανάπτυξης: $(if ($UseWinCS) { "WinCS (WinCsFlags.exe)" } else { "AvailableUpdatesPolicy (GPO)" })" if ($UseWinCS) {     Write-Host " Πλήκτρο WinCS: $WinCSKey" } Write-Host ""

# ============================================================================ Εντοπισμός # GPO - ΑΥΤΌΜΑΤΗ ΑΝΆΠΤΥΞΗ ΕΆΝ ΛΕΊΠΕΙ # ============================================================================

$CollectionGPOName = "SecureBoot-EventCollection" $deployGpoScript = Join-Path $PSScriptRoot "Deploy-GPO-SecureBootCollection.ps1"

# Check if GroupPolicy module is available if (Get-Module -ListAvailable -Name GroupPolicy) {     Import-Module GroupPolicy -ErrorAction SilentlyContinue     Write-Host "Έλεγχος για GPO εντοπισμού..." -ForegroundColor Yellow     δοκιμάστε το {         # Λήψη του τομέα από το AggregationInputPath (π.χ., \\domain\share)         $domainFromPath = if ($AggregationInputPath -match '^\\\\\([^\\]+)\\') {             $matches[1]         } άλλος {             $env:USERDNSDOMAIN         }         # Ελέγξτε εάν υπάρχει αντικείμενο πολιτικής ομάδας (GPO)         $existingGpo = Get-GPO -Name $CollectionGPOName -ErrorAction SilentlyContinue         if ($existingGpo) {             Write-Host " Εντοπίστηκε GPO ανίχνευσης: $CollectionGPOName" -ForegroundColor Green         } άλλος {             Write-Host ""             Write-Host ("=" * 70) -Χρώμα πρώτου πλάνου Κίτρινο             Write-Host " DETECTION GPO NOT FOUND" -ForegroundColor Yellow             Write-Host ("=" * 70) -Χρώμα πρώτου πλάνου Κίτρινο             Write-Host ""             Write-Host "Το GPO εντοπισμού "$CollectionGPOName" δεν βρέθηκε." -ForegroundColor Yellow             Write-Host "Αυτό το αντικείμενο πολιτικής ομάδας (GPO) απαιτείται για τη συλλογή δεδομένων κατάστασης συσκευής." -Κίτρινο χρώμα πρώτου πλάνου             Write-Host ""             # Ρωτήστε τον χρήστη εάν θέλει να αναπτύξει το αντικείμενο πολιτικής ομάδας (GPO) τώρα             Write-Host "Θέλετε να αναπτύξετε τώρα το αντικείμενο πολιτικής ομάδας εντοπισμού;                                          (Y/N)" -ForegroundColor Cyan             $response = Read-Host                          if ($response -match '^[Yy]') {                 Write-Host ""                 Write-Host "Εκκίνηση ανάπτυξης GPO..." -ForegroundColor Cyan                 Write-Host ""                                  # Παράμετροι δόμησης για ανάπτυξη GPO                 $gpoParams = @{                     DomainName = $domainFromPath                     CollectionSharePath = $AggregationInputPath                     ScriptSourcePath = Join-Path $PSScriptRoot "Detect-SecureBootCertUpdateStatus.ps1"                 }                                  if ($TargetOU) {                     $gpoParams.OUPath = $TargetOU                 } άλλος {                     # Use AutoDetectOU to let user select                     $gpoParams.AutoDetectOU = $true                 }                                  # Εκτέλεση της δέσμης ενεργειών ανάπτυξης GPO                                 & $deployGpoScript @gpoParams                 if ($LASTEXITCODE -ne 0) {                     Write-Host "Η ανάπτυξη GPO ενδέχεται να αντιμετώπισε προβλήματα. Ελέγξτε την έξοδο παραπάνω." -ForegroundColor Yellow                     Write-Host "Μπορείτε να συνεχίσετε με την ανάπτυξη του ενορχηστρωτή ή να πατήσετε το συνδυασμό πλήκτρων Ctrl+C για ματαίωση". -ForegroundColor Yellow                     Write-Host ""                     Read-Host "Πατήστε το πλήκτρο Enter για να συνεχίσετε"                 } άλλος {                     Write-Host ""                     Write-Host "Το GPO ανίχνευσης αναπτύχθηκε με επιτυχία!" -ForegroundColor Green                     Write-Host ""                 }             } άλλος {                 Write-Host ""                 Write-Host "Παράλειψη ανάπτυξης GPO. Ο ενορχηστρωτής δεν θα λαμβάνει δεδομένα συσκευής" -ForegroundColor Yellow                 Write-Host "μέχρι να αναπτυχθεί με μη αυτόματο τρόπο το GPO εντοπισμού". -Κίτρινο χρώμα πρώτου πλάνου                 Write-Host ""                 Write-Host "Για να αναπτύξετε το GPO ανίχνευσης αργότερα, εκτελέστε:" -ForegroundColor Cyan                 Write-Host " .\Deploy-GPO-SecureBootCollection.ps1 -DomainName '"$domainFromPath'" -AutoDetectOU" -ForegroundColor White                 Write-Host ""             }         }     } αλίευση {         Write-Host " Δεν είναι δυνατός ο έλεγχος για αντικείμενο πολιτικής ομάδας (GPO): $($_. Exception.Message)" -ForegroundColor Yellow         Write-Host " Συνέχιση της ανάπτυξης του ενορχηστρωτή..." -ForegroundColor Gray     } } άλλος {     Write-Host " Η λειτουργική μονάδα GroupPolicy δεν είναι διαθέσιμη - παράλειψη ελέγχου GPO" -ForegroundColor Gray     Write-Host " Βεβαιωθείτε ότι το GPO εντοπισμού αναπτύσσεται ξεχωριστά." -ForegroundColor Gray }

Write-Host ""

# ============================================================================ # ΔΗΜΙΟΥΡΓΊΑ ΟΡΙΣΜΆΤΩΝ # ============================================================================

$arguments = @(     "-NoProfile"     "-ExecutionPolicy Bypass"     "-Αρχείο '"$ScriptPath'""     "-AggregationInputPath '"$AggregationInputPath'""     "-ReportBasePath '"$ReportBasePath'""     "-PollIntervalMinutes $PollIntervalMinutes" )

if ($TargetOU) {     $arguments += "-TargetOU '"$TargetOU'"" }

if ($UseWinCS) {     $arguments += "-UseWinCS"     $arguments += "-WinCSKey '"$WinCSKey'"" }

$argumentString = $arguments -join " "

# Don't display raw arguments with full paths - it's confusing for published scripts # Η εργασία θα χρησιμοποιήσει την πλήρη διαδρομή εσωτερικά

# ============================================================================ # ΔΗΜΙΟΥΡΓΊΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΈΝΗς ΕΡΓΑΣΊΑς # ============================================================================

# Check for existing task $existingTask = Get-ScheduledTask -Όνομα_εργασίας $TaskName -ErrorAction SilentlyContinue if ($existingTask) {     Write-Host "Η εργασία υπάρχει ήδη. Ενημέρωση..." -Κίτρινο χρώμα πρώτου πλάνου     Stop-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue     Unregister-ScheduledTask -Όνομα_εργασίας $TaskName -Επιβεβαίωση:$false }

# Create task action $action = New-ScheduledTaskAction -Εκτέλεση "powershell.exe" -$argumentString ορίσματος -Επεξεργασία $PSScriptRoot

# Create trigger - run once, immediately (orchestrator loops internally) $trigger = New-ScheduledTaskTrigger -Μία φορά -Σε (Ημερομηνία λήψης). AddMinutes(1)

# Create principal if ($ServiceAccount -eq "SYSTEM") {     $principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest } άλλος {     # Ερώτηση για κωδικό πρόσβασης για λογαριασμό τομέα     Write-Host "Εισαγωγή κωδικού πρόσβασης για $ServiceAccount" -Κίτρινο χρώμα πρώτου πλάνου     $cred = Get-Credential -UserName $ServiceAccount -Μήνυμα "Διαπιστευτήρια λογαριασμού υπηρεσίας για την προγραμματισμένη εργασία"     $principal = New-ScheduledTaskPrincipal -UserId $ServiceAccount -Κωδικός πρόσβασης LogonType -Υψηλότερο επίπεδο εκτέλεσης }

# Task settings $settings = New-ScheduledTaskSettingsSet '     -AllowStartIfOnBatteries '     -DontStopIfGoingOnBatteries '     -StartWhenAvailable '     -RunOnlyIfNetworkAvailable '     -RestartCount 3 '     -RestartInterval (New-TimeSpan -Minutes 5) '     -ExecutionTimeLimit (New-TimeSpan -Days 30) # Allow long-running

# Register task δοκιμάστε το {     if ($ServiceAccount -eq "SYSTEM") {         Register-ScheduledTask -TaskName $TaskName -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Περιγραφή "Secure Boot Certificate Rollout - Automated GPO deployment"     } άλλος {         Register-ScheduledTask -Όνομα_εργασίας $TaskName -$action ενεργειών -Trigger $trigger -Principal $principal -Settings $settings -Περιγραφή "Secure Boot Certificate Rollout - Automated GPO deployment" -User $ServiceAccount -Password $cred. GetNetworkCredential(). Κωδικό πρόσβασης     }     Write-Host "Η προγραμματισμένη εργασία δημιουργήθηκε με επιτυχία!" -ForegroundColor Green } αλίευση {     Write-Host "Απέτυχε η δημιουργία προγραμματισμένης εργασίας: $($_. Exception.Message)" -ForegroundColor Red     έξοδος 1 }

# ============================================================================ # CREATE STATUS SHORTCUT # ============================================================================

$statusScript = Join-Path $PSScriptRoot "Get-SecureBootRolloutStatus.ps1" if (Test-Path $statusScript) {     Write-Host ""     Write-Host "Για να ελέγξετε την κατάσταση παράδοσης, εκτέλεση:" -Πρώτο πλάνοΧρήση κίτρινο     Write-Host " .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath '"$ReportBasePath'"" -ForegroundColor Cyan }

# ============================================================================ # ΈΞΟΔΟς # ============================================================================

Write-Host "" Write-Host ("=" * 70) -Πράσινο χρώμα πρώτου πλάνου Write-Host " DEPLOYMENT COMPLETE" -ForegroundColor Green Write-Host ("=" * 70) -Πράσινο χρώμα πρώτου πλάνου Write-Host "" Write-Host "Ο ενορχηστρωτής θα ξεκινήσει σε περίπου 1 λεπτό." -ForegroundColor White Write-Host "" Write-Host "MONITORING:" -ForegroundColor Yellow Write-Host " Προβολή κατάστασης εργασίας: Get-ScheduledTask -Όνομα_εργασίας '$TaskName' | Select State" Write-Host " Προβολή αρχείου καταγραφής εργασιών: Get-Content '$ReportBasePath\RolloutState\Orchestrator_$(Get-Date -Format 'yyyMMdd').log' -Tail 50" Write-Host " Προβολή κατάστασης παράδοσης: Get-Content '$ReportBasePath\RolloutState\RolloutState.json' | ConvertFrom-Json" Write-Host " Προβολή πίνακα εργαλείων: Έναρξη '$ReportBasePath\Aggregation_*\SecureBoot_Dashboard*.html'" Write-Host " Γρήγορη κατάσταση: .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath '$ReportBasePath'" Write-Host "" Write-Host "MANAGEMENT:" -ForegroundColor Yellow Write-Host " Ξεκινήστε με μη αυτόματο τρόπο: Start-ScheduledTask -Όνομα εργασίας '$TaskName'" Write-Host " Διακοπή: Stop-ScheduledTask -Όνομα_εργασίας '$TaskName'" Write-Host " Κατάργηση: .\Deploy-OrchestratorTask.ps1 -Κατάργηση εγκατάστασης" Write-Host ""  

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

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

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