Kopirajte in prilepite ta vzorčni skript ter ga po potrebi spremenite za svoje okolje:

<# . SINOPSIS     Uvede orkester za varni zagon kot načrtovano opravilo sistema Windows.

.DESCRIPTION     Ustvari načrtovano opravilo, ki neprekinjeno vodi orkester v ozadju.Opravilo se zažene s pravilnikom za izvajanje obhoda, tako da se ne prikaže noben varnostni poziv.     Orkester bo:     – Anketa o posodobitvah naprave v določenem intervalu     – samodejno ustvarjate valove in uvajate pravilnike skupine,     – nadaljujte, dokler niso posodobljene vse upravičene naprave          Nadzor napredovanja z uporabo: Get-SecureBootRolloutStatus.ps1

.PARAMETER AggregationInputPath     Pot UNC do podatkov o napravi JSON (iz predmeta pravilnika skupine za zaznavanje)

.PARAMETER ReportBasePath     Lokalna pot za poročila in datoteke stanja

.PARAMETER TargetOU     OU za povezovanje pravilnikov skupine (izbirno – privzete vrednosti do korena domene)

.PARAMETER PollIntervalMinutes     Minute med preverjanji stanja. Privzeto: 30

.PARAMETER UseWinCS     Namesto pravilnika skupine AvailableUpdatesPolicy uporabite WinCS (Sistem konfiguracije sistema Windows).Ko je to omogočeno, uvede WinCsFlags.exe opravilo v končne točke namesto v predmet pravilnika skupin registra.

.PARAMETER WinCSKey     Ključ WinCS za konfiguracijo varnega zagona. Privzeto: F33E0C8E002

.PARAMETER ServiceAccount     Račun, da zaženete opravilo. Privzeto: SYSTEM     Za postopke domene uporabite račun skrbniške storitve domene.

.PARAMETER ScriptPath     Pot do orkester skript. Privzeto: Ista mapa kot ta skript.

.PARAMETER Uninstall     Odstranjevanje načrtovanega opravila

.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     # Uvedba z načinom WinCS namesto AvailableUpdatesPolicy     .\Deploy-OrchestratorTask.ps1 -AggregationInputPath "\\server\SecureBootData$" -ReportBasePath "C:\SecureBootReports" -UseWinCS

.EXAMPLE     .\Deploy-OrchestratorTask.ps1 - Uninstall #>

[CmdletBinding()] param (     [Parameter(Obvezno = $false)]     [string]$AggregationInputPath,     [Parameter(Obvezno = $false)]     [string]$ReportBasePath,     [Parameter(Obvezno = $false)]     [string]$TargetOU,     [Parameter(Obvezno = $false)]     [int]$PollIntervalMinutes = 30,     [Parameter(Obvezno = $false)]     [switch]$UseWinCS,     [Parameter(Obvezno = $false)]     [string]$WinCSKey = "F33E0C8E002",     [Parameter(Obvezno = $false)]     [string]$ServiceAccount = "SYSTEM",     [Parameter(Obvezno = $false)]     [string]$ScriptPath,     [Parameter(Obvezno = $false)]     [stikalo]$Uninstall )                                        

$ErrorActionPreference = "Stop" $TaskName = »SecureBoot-Rollout-Orchestrator« $DownloadUrl = "https://aka.ms/getsecureboot" $DownloadSubPage = »Vzorci uvajanja in spremljanja«

# ============================================================================ # PREVERJANJE ODVISNOSTI # ============================================================================

function Test-ScriptDependencies {     <#     . SINOPSIS         Preveri, ali so prisotni vsi zahtevani skripti.. OPIS         Preveri, ali so na voljo zahtevane odvisnosti skriptov in ponudi navodila za prenos, če manjkajo.#>     param (         [Parameter(Obvezno = $true)]         [string]$ScriptDirectory,                  [Parameter(Obvezno = $true)]         [string[]]$RequiredScripts     )          $missingScripts = @()          foreach ($script mestu $RequiredScripts) {         $scriptPath = Join-Path $ScriptDirectory $script         if (-not (Test-Path $scriptPath)) {             $missingScripts += $script         }     }          if ($missingScripts.Count -gt 0) {         Write-Host »«         Write-Host ("=" * 70) -OspredjeBarva rdeče         Write-Host » MISSING DEPENDENCIES« -ForegroundColor Red         Write-Host ("=" * 70) -OspredjeBarva rdeče         Write-Host »«         Write-Host »Teh zahtevanih skriptov ni bilo mogoče najti:« -ForegroundColor Yellow         foreach ($script mestu $missingScripts) {             Write-Host " - $script" -ForegroundColor White         }         Write-Host »«         Write-Host "Please download the latest scripts from:" -ForegroundColor Cyan         Write-Host » URL: $DownloadUrl« -ForegroundColor White         Write-Host »Navigate to: '$DownloadSubPage'« -ForegroundColor White         Write-Host »«         Write-Host »Ekstrahiraj vse skripte v isti imenik in znova zaženi.« -ForegroundColor Yellow         Write-Host »«         return $false     }          return $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)) {     izhod 1 }

# ============================================================================ # ODSTRANI # ============================================================================

if ($Uninstall) {     Write-Host »«     Write-Host »Removing scheduled task: $TaskName« -ForegroundColor Yellow     $existingTask = Get-ScheduledTask -TaskName $TaskName ErrorAction SilentlyContinue     if ($existingTask) {         Stop-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue         Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false         Write-Host »Task removed successfully« (Opravilo je bilo uspešno odstranjeno). -OspredjeBarva zelena     } drugo {         Write-Host »Opravila ni mogoče najti«. -OspredjeBarva siva     }     izhod 0 }     

# ============================================================================ # PREVERJANJE VELJAVNOSTI # ============================================================================

if (-not $AggregationInputPath -or -not $ReportBasePath) {     Write-Host »ERROR: -AggregationInputPath and -ReportBasePath are required« (NAPAKA: –AggregationInputPath in -ReportBasePath). -ForegroundColor Red     Write-Host »«     Write-Host »Example:« -ForegroundColor Yellow     Write-Host ' .\Deploy-OrchestratorTask.ps1 -AggregationInputPath "\\server\SecureBootData$" -ReportBasePath "C:\SecureBootReports""     izhod 1 }

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

if (-not (Test-Path $ScriptPath)) {     Write-Host »ERROR: Orchestrator script not found: $ScriptPath« -ForegroundColor Red     izhod 1 }

# Find aggregation script (needed by orchestrator) $aggregateScript = Join-Path $PSScriptRoot "Aggregate-SecureBootData.ps1" if (-not (Test-Path $aggregateScript)) {     Write-Host »OPOZORILO: Aggregate-SecureBootData.ps1 ni mogoče najti v imeniku skripta« -ForegroundColor Yellow     Write-Host »Orchestrator may fail if it cannot find this script« (Orkester morda ne uspe, če ne najde tega skripta). -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 -Leaf

Write-Host "Configuration:" -ForegroundColor Yellow Write-Host »Ime opravila: $TaskName« Write-Host » Orchestrator: $displayScriptPath« Write-Host »Vhodna pot: $AggregationInputPath« Write-Host »Pot poročila: $ReportBasePath« Write-Host » Ciljna OU: $(if ($TargetOU) { $TargetOU } else { '(domain root)' })" Write-Host »Interval ankete: $PollIntervalMinutes minutes« Write-Host »Račun storitve: $ServiceAccount« Write-Host » Način uvajanja: $(if ($UseWinCS) { "WinCS (WinCsFlags.exe)" } drugo { "AvailableUpdatesPolicy (GPO)" })" if ($UseWinCS) {     Write-Host »Ključ WinCS: $WinCSKey« } Write-Host »«

# ============================================================================ # ZAZNAVANJE PREDMETA PRAVILNIKA SKUPIN – SAMODEJNO UVAJANJE, ČE MANJKA # ============================================================================

$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 »Checking for Detection GPO...« -ForegroundColor Yellow     poskusite {         # Pridobite domeno iz možnosti AggregationInputPath (npr. \\domain\share)         $domainFromPath = if ($AggregationInputPath -match '^\\\\([^\\]+)\\') {             $matches[1]         } drugo {             $env:USERDNSDOMAIN         }         # Preverite, ali predmet pravilnika skupin obstaja         $existingGpo = Get-GPO -Name $CollectionGPOName -ErrorAction SilentlyContinue         if ($existingGpo) {             Write-Host »Detection GPO found: $CollectionGPOName« -ForegroundColor Green         } drugo {             Write-Host »«             Write-Host ("=" * 70) -OspredjeBarva rumena             Write-Host »DETECTION GPO NOT FOUND« -ForegroundColor Yellow             Write-Host ("=" * 70) -OspredjeBarva rumena             Write-Host »«             Write-Host »Predmeta pravilnika skupin zaznavanja »$CollectionGPOName« ni bilo mogoče najti.« -ForegroundColor Yellow             Write-Host »Ta predmet pravilnika skupin je potreben za zbiranje podatkov o stanju naprave.« -OspredjeBarva rumena             Write-Host »«             # Vprašajte uporabnika, ali želijo uvesti predmet pravilnika skupin zdaj             Write-Host »Ali želite zdaj uvesti predmet pravilnika skupin zaznavanja?                                          (Y/N)" -ForegroundColor Cyan             $response = Read-Host                          if ($response -match '^[Yy]') {                 Write-Host »«                 Write-Host »Launching GPO Deployment...-ForegroundColor Cyan«                 Write-Host »«                                  # Parametri graditve za uvajanje predmeta pravilnika skupin                 $gpoParams = @{                     DomainName = $domainFromPath                     CollectionSharePath = $AggregationInputPath                     ScriptSourcePath = Join-Path $PSScriptRoot "Detect-SecureBootCertUpdateStatus.ps1"                 }                                  if ($TargetOU) {                     $gpoParams.OUPath = $TargetOU                 } drugo {                     # S funkcijo AutoDetectOU lahko uporabnik izbere                     $gpoParams.AutoDetectOU = $true                 }                                  # Zaženite skript uvajanja predmeta pravilnika skupin                                 & $deployGpoScript @gpoParams                 if ($LASTEXITCODE-ne 0) {                     Write-Host »Morda je prišlo do težav pri uvajanju predmeta pravilnika skupin. Preglejte zgornji rezultat.« -OspredjeBarva rumena                     Write-Host »Lahko nadaljujete z uvajanjem v orkester ali pritisnete Ctrl + C, da prekinete.« -ForegroundColor Yellow                     Write-Host »«                     Read-Host »Press Enter to continue« (Za nadaljevanje pritisnite tipko Enter).                 } drugo {                     Write-Host »«                     Write-Host »Detection GPO deployed successfully!« -ForegroundColor Green                     Write-Host »«                 }             } drugo {                 Write-Host »«                 Write-Host »Preskok uvajanja predmeta pravilnika skupin. Orchestrator ne bo prejel podatkov o napravi« -ForegroundColor Yellow                 Write-Host »dokler predmet pravilnika skupin zaznavanja ni uveden ročno.« -OspredjeBarva rumena                 Write-Host »«                 Write-Host »To deploy the Detection GPO later, run:« -ForegroundColor Cyan                 Write-Host " .\Deploy-GPO-SecureBootCollection.ps1 -DomainName '"$domainFromPath'" -AutoDetectOU" -ForegroundColor White                 Write-Host »«             }         }     } ulova {         Write-Host »Predmeta pravilnika skupin ni mogoče preveriti: $($_. Exception.Message)" -ForegroundColor Yellow         Write-Host »Nadaljevanje z uvajanjem orkestra ...«-OspredjeBarva siva     } } drugo {     Write-Host »GroupPolicy module not available - preskakovanje gpo check« -ForegroundColor Gray     Write-Host » Prepričajte se, da je predmet pravilnika skupin zaznavanja uveden ločeno.« -OspredjeBarva siva }

Write-Host ""

# ============================================================================ # BUILD ARGUMENTI # ============================================================================

$arguments = @(     »-NoProfile«     "-ExecutionPolicy Bypass"     »-File '"$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 # Opravilo bo interno uporabilo celotno pot

# ============================================================================ # USTVARJANJE NAČRTOVANEGA OPRAVILA # ============================================================================

# Check for existing task $existingTask = Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue if ($existingTask) {     Write-Host »Opravilo že obstaja. Posodabljanje ... – ospredjeBarva rumena     Stop-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue     Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false }

# Create task action $action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument $argumentString -WorkingDirectory $PSScriptRoot

# Create trigger - run once, immediately (orchestrator loops internally) $trigger = New-ScheduledTaskTrigger -enkrat -na (Get-Date). AddMinutes(1)

# Create principal if ($ServiceAccount -eq "SYSTEM") {     $principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest } drugo {     # Poziv za geslo za račun domene     Write-Host »Enter password for $ServiceAccount« -ForegroundColor Yellow     $cred = Get-Credential -UserName $ServiceAccount Message "Service account credentials for scheduled task"     $principal = New-ScheduledTaskPrincipal -UserId $ServiceAccount -LogonType Password -RunLevel Highest }

# 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 poskusite {     if ($ServiceAccount -eq "SYSTEM") {         Register-ScheduledTask -TaskName $TaskName -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Description "Secure Boot Certificate Rollout - Automated GPO deployment"     } drugo {         Register-ScheduledTask -TaskName $TaskName -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Description "Secure Boot Certificate Rollout - Automated GPO deployment" -User $ServiceAccount -Password $cred. GetNetworkCredential(). Geslo     }     Write-Host »Načrtovano opravilo je bilo uspešno ustvarjeno!« -OspredjeColor zelena } ulova {     Write-Host »Načrtovanega opravila ni bilo mogoče ustvariti: $($_. Exception.Message)" -ForegroundColor Red     izhod 1 }

# ============================================================================ # USTVARJANJE BLIŽNJICE STANJA # ============================================================================

$statusScript = Join-Path $PSScriptRoot "Get-SecureBootRolloutStatus.ps1" if (preskusna pot $statusScript) {     Write-Host »«     Write-Host »To check rollout status, run:« -ForegroundColor Yellow     Write-Host » .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath '"$ReportBasePath'""" -ForegroundColor Cyan }

# ============================================================================ # OUTPUT # ============================================================================

Write-Host "" Write-Host ("=" * 70) -ForegroundColor Green Write-Host »UVAJANJE DOKONČANO« -OspredjeBarva zelena Write-Host ("=" * 70) -ForegroundColor Green Write-Host »« Write-Host »Orkester se bo začel v približno 1 minuti.« -ForegroundColor White Write-Host »« Write-Host "MONITORING:" -ForegroundColor Yellow Write-Host »View task status: Get-ScheduledTask -TaskName '$TaskName' | Izberite Zvezna država« Write-Host » Ogled dnevnika opravil: Get-Content '$ReportBasePath\RolloutState\Orchestrator_$(Get-Date -Format 'yyyyMMdd').log' -Tail 50« Write-Host » View rollout state: Get-Content '$ReportBasePath\RolloutState\RolloutState.json' | ConvertFrom-Json" Write-Host » View dashboard: Start '$ReportBasePath\Aggregation_*\SecureBoot_Dashboard*.html'« Write-Host »Quick status: .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath '$ReportBasePath'« Write-Host »« Write-Host »MANAGEMENT:« -ForegroundColor Yellow Write-Host »Start manually: Start-ScheduledTask -TaskName '$TaskName'« Write-Host » Stop: Stop-ScheduledTask -TaskName '$TaskName'« Write-Host » Odstrani: .\Deploy-OrchestratorTask.ps1 -Uninstall« Write-Host »«  

Ali potrebujete dodatno pomoč?

Ali želite več možnosti?

Raziščite ugodnosti naročnine, prebrskajte izobraževalne tečaje, preberite, kako zaščitite svojo napravo in še več.