VAЋNO Ovaj članak koji sadrži ovu probnu skriptu je povučen. Počevši od Ispravki za Windows objavljenih 12. maja 2026. i posle toga, uzorak skripte nalazi se u fascikli %systemroot%\SecureBoot\ExampleRolloutScripts na uređaju.

Kopirajte i nalepite ovu uzorak skripte i izmenite po potrebi za okruženje:

<# . SINOPSIS     Omogućava planirani zadatak ažuriranja bezbednog pokretanja.

.DESCRIPTION     Ova skripta obezbeđuje planirani zadatak ažuriranja bezbednog pokretanja operativnog sistema Windows     (\Microsoft\Windows\PI\Secure-Boot-Update) je omogućen. Ako je onemogućeno,     on ga omogućava. Ako je zadatak izbrisan, može ponovo da ga kreira.

.PARAMETER Action     Radnja koju treba izvršiti. Važeće vrednosti: provera, omogućavanje, kreiranje     - provera: Samo proverite status zadatka     - omogućite: (podrazumevano) Omogućite zadatak ako je onemogućen. Ako nedostaje zadatak, traži da ga napravite.- kreiraj: kreirajte zadatak ako on ne postoji

.PARAMETER ComputerName     Opcionalno. Niz imena računara za proveru/omogućavanje zadatka.Ako nije navedeno, pokreće se na lokalnom računaru.

.PARAMETER Credential     Opcionalno. Akreditivi za daljinski pristup računaru.

.PARAMETER Quiet     Sprečava pojavljivanje odziva i automatski daje odgovor Da. Korisno za automatizaciju.

.EXAMPLE     .\Enable-SecureBootTask.ps1     # Omogućava status zadatka na lokalnom računaru

.EXAMPLE     .\Check-SecureBootScheduledTask.ps1 omogući     # Omogućava zadatak ako je onemogućen. Upiti kreirati ako nedostaje.

.EXAMPLE     .\Check-SecureBootScheduledTask.ps1 kreiraj     # Kreira zadatak ako je izbrisan, a zatim proverava status

.EXAMPLE     .\Check-SecureBootScheduledTask.ps1 check -ComputerName "PC1", "PC2"     # Proverava zadatak na udaljenim računarima

.NOTES     Zahteva administratorske privilegije za omogućavanje ili kreiranje zadatka.Putanja zadatka: \Microsoft\Windows\PI\Secure-Boot-Update     Zadatak se pokreće taskhostw.exe svakih 12 sati sa punim privilegijama.#>

[CmdletBinding(SupportsShouldProcess)] param(     [Parameter(Position=0)]     [ValidateSet('check', 'enable', 'create', '')]     [string]$Action = "enable",

    [Parameter()]     [niska[]]$ComputerName,

    [Parameter()]     [PSCredential]$Credential,

    [Parameter()]     [Pseudonim('Sila', 'Tiho')]     [switch]$Quiet )

# Convert Action to switches for backward compatibility $Enable = $Action -eq "enable" $Create = $Action -eq 'create'

# Download URL: https://aka.ms/getsecureboot -> "Deployment and Monitoring Samples" # Napomena: Ova skripta se pokreće na krajnjim tačkama kako bi se omogućio zadatak "Bezbedno pokretanje aplikacije".

$TaskPath = "\Microsoft\Windows\PI\" $TaskName = "Secure-Boot-Update"

function Get-SecureBootTaskStatus {     [CmdletBinding()]     param(         [string]$Computer = $env:COMPUTERNAME     )

    $result = [PSCustomObject]@{         ComputerName = $Computer         TaskExists = $false         Status zadatka = $null         IsEnabled = $false         LastRunTime = $null         NextRunTime = $null         Greška = $null     }

    try {         if ($Computer -eq $env:COMPUTERNAME -ili $Computer -eq "localhost" -ili $Computer -eq ".") {             # Koristite schtasks.exe za pouzdanije otkrivanje zadataka             $schtasksOutput = schtasks.exe /Query /TN "$TaskPath$TaskName" /FO CSV 2>&1                          if ($LASTEXITCODE -ne 0) {                 # Zadatak nije pronađen nije greška – samo znači da zadatak ne postoji                 $result. TaskExists = $false                 return $result             }                          # Raščlani CSV izlaz             $taskData = $schtasksOutput | ConvertFrom-Csv             ako ($taskData) {                 $result. TaskExists = $true                 $result. TaskState = $taskData.Status                 $result. IsEnabled = ($taskData.Status -eq "Spremno" -ili $taskData.Status -eq "Pokrenuto")                                  # Pokušaj da dobiješ sledeće vreme izvršavanja od podataka                 ako ($taskData.'Sledeće vreme izvršavanja' i $taskData."Sledeće vreme izvršavanja" -ne "N/A") {                     pokušajte {                         $result. NextRunTime = [DateTime]::P arse($taskData.'Next Run Time')                     } hvatanje { }                 }             }         }         else {             # Udaljeni računar – koristite Invoke-Command sa šeksima             $remoteResult = Invoke-Command -ComputerName $Computer -ScriptBlock {                 param($fullTaskName)                 $output = schtasks.exe /Query /TN $fullTaskName /FO CSV 2>&1                 @{                     ExitCode = $LASTEXITCODE                     Izlaz = $output                 }             } -parametarList "$TaskPath$TaskName" -ErrorAction Stop

            if ($remoteResult.ExitCode -ne 0) {                 # Zadatak nije pronađen nije greška – samo znači da zadatak ne postoji                 $result. TaskExists = $false                 povratni $result             }

            $taskData = $remoteResult.Output | ConvertFrom-Csv             ako ($taskData) {                 $result. TaskExists = $true                 $result. TaskState = $taskData.Status                 $result. IsEnabled = ($taskData.Status -eq "Spremno" -ili $taskData.Status -eq "Pokrenuto")             }         }     }     uhvatite {         $result. Greška = $_. Exception.Message     }

    return $result }

function New-SecureBootTask {     [CmdletBinding(SupportsShouldProcess)]     param(         [string]$Computer = $env:COMPUTERNAME     )

    $success = $false     $errorMsg = $null

    # Task definition - matches the original Windows Secure Boot Update task     # Koristi ComHandler sa klasom SBServicing, pokreće se kao LocalSystem     $taskXml = @" <?xml version="1.0" encoding="UTF-16"?> <Task version="1.6" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">   <za registraciju informacija>     <datum>.02.2012.-07T16:39:20</Datum>     <SecurityDescriptor>O:BAG:BAD:P(A;; OS;;; BA)(A;; OS;;; SY)(A;; FRFX;;; LS)</SecurityDescriptor>     <izvora>'$(@%SystemRoot%\system32\TpmTasks.dll,-601)</Source>     <>'$(@%SystemRoot%\system32\TpmTasks.dll,-600)</Author>     <opis>'$(@%SystemRoot%\system32\TpmTasks.dll,-604)</Description>     <URI>\Microsoft\Windows\PI\Secure-Boot-Update</URI>   </RegistrationInfo>   <principala>     <principala="LocalSystem">       <userId>S-1-5-18</UserId>     </principal>   </Principals>   <postavke>     <startIfOnBatteries>false</DisallowStartIfOnBatteries>     ><0 StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>     ><4 ExecutionTimeLimit>PT1H</ExecutionTimeLimit>     ><8 MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>     <StartWhenAvailable>true</StartWhenAvailable>     <IdleSettings>       <StopOnIdleEnd>tačno</StopOnIdleEnd>       <RestartOnIdle>false</RestartOnIdle>     </IdleSettings>     <UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>   </Settings>   <okidače>     <BootTrigger>       <odlaganje>PT5M</Odlaganje>       <ponavljanja>         <intervala>PT12H</Interval>       </ponavljanje>     </BootTrigger>   </Triggers>   <Kontekst radnji="LocalSystem">     <ComHandler>       <ClassId>{5014B7C8-934E-4262-9816-887FA745A6C4}</ClassId>       <podatke><! [CDATA[SBServicing]]></Data>     </ComHandler>   </Actions> </Fascikla> " @

    try {         if ($Computer -eq $env:COMPUTERNAME -ili $Computer -eq "localhost" -ili $Computer -eq ".") {             if ($PSCmdlet.ShouldProcess("$TaskPath$TaskName", "Create scheduled task")) {                 # Sačuvaj XML u privremenoj datoteci i uvozu                 $tempFile = [System.IO.Path]::GetTempFileName()                 $taskXml | Out-File -FilePath $tempFile -Šifrovanje Unikod -Force                                  $output = schtasks.exe /Create /TN "$TaskPath$TaskName" /XML $tempFile /F 2>&1                                  Remove-Item $tempFile -Force - ErrorAction SilentlyContinue                                  if ($LASTEXITCODE -eq 0) {                     $success = $true                 } još {                     $errorMsg = $output -join " "                 }             }         }         else {             if ($PSCmdlet.ShouldProcess("$Computer\$TaskPath$TaskName", "Create scheduled task")) {                 $result = Invoke-Command -ComputerName $Computer -ScriptBlock {                     param($taskPath, $taskName, $xml)                     $tempFile = [System.IO.Path]::GetTempFileName()                     $xml | Out-File -FilePath $tempFile -Šifrovanje Unikod -Force                     $output = schtasks.exe /Create /TN "$taskPath$taskName" /XML $tempFile /F 2>&1                     Remove-Item $tempFile -Force -ErrorAction SilentlyContinue                     @{ ExitCode = $LASTEXITCODE; Izlaz = $output }                 } -ArgumentLista $TaskPath, $TaskName, $taskXml -Prekid radnje                                  ako ($result. ExitCode -eq 0) {                     $success = $true                 } još {                     $errorMsg = $result. Output - join "                 }             }         }     }     uhvatite {         $errorMsg = $_. Exception.Message     }

    return @{         Uspeh = $success         Greška = $errorMsg     } }

function Enable-SecureBootTask {     [CmdletBinding(SupportsShouldProcess)]     param(         [string]$Computer = $env:COMPUTERNAME     )

    $success = $false     $errorMsg = $null

    try {         if ($Computer -eq $env:COMPUTERNAME -ili $Computer -eq "localhost" -ili $Computer -eq ".") {             if ($PSCmdlet.ShouldProcess("$TaskPath$TaskName", "Enable scheduled task")) {                 $output = schtasks.exe /Change /TN "$TaskPath$TaskName" /ENABLE 2>&1                 if ($LASTEXITCODE -eq 0) {                     $success = $true                 } još {                     $errorMsg = $output -join " "                 }             }         }         else {             if ($PSCmdlet.ShouldProcess("$Computer\$TaskPath$TaskName", "Enable scheduled task")) {                 $result = Invoke-Command -ComputerName $Computer -ScriptBlock {                     param($fullTaskName)                     $output = schtasks.exe /Change /TN $fullTaskName /ENABLE 2>&1                     @{ ExitCode = $LASTEXITCODE; Izlaz = $output }                 } -parametarList "$TaskPath$TaskName" -ErrorAction Stop                                  ako ($result. ExitCode -eq 0) {                     $success = $true                 } još {                     $errorMsg = $result. Output - join "                 }             }         }     }     uhvatite {         $errorMsg = $_. Exception.Message     }

    return @{         Uspeh = $success         Greška = $errorMsg     } }

# Main execution Write-Host "" Write-Host "========================================" - Boja prednjeg plana Cijan Write-Host " Enabler za omogućavanje zadatka ažuriranja bezbednog pokretanja" -ForegroundColor Cyan Write-Host "========================================" - Boja prednjeg plana Cijan Write-Host "" Write-Host "Zadatak: $TaskPath$Ime zadatka" - Boja prednjeg plana siva Write-Host ""

# Determine target computers $targets = if ($ComputerName) { $ComputerName } else { @($env:COMPUTERNAME) }

$results = @()

foreach ($computer in $targets) {     Write-Host "Provera: $computer" - Boja prednjeg plana žuta     $status = Get-SecureBootTaskStatus -Računarski $computer     ako ($status. Greška) {         Write-Host " Greška: $($status. Greška)" -Boja prednjeg plana Crvena boja     }     elseif (-not $status. TaskExists) {         Write-Host " Zadatak ne postoji u ovom sistemu" - Boja prednjeg plana Crvena boja         # Kreirajte ako je zatraženo ili odziv ako je stavka Omogući navedena         $shouldCreate = $Create         ako (-ne $shouldCreate -a $Enable) {             Write-Host ""             Write-Host " Zadatak je možda izbrisan". - Boja prednjeg plana – žuta boja             ako ($Quiet) {                 Write-Host " Zadatak automatskog kreiranja (tihi režim)" -Prednji planColor Cyan                 $shouldCreate = $true             } još {                 $confirm = Read-Host " Želite li da ponovo kreirate zadatak?                    (Y/N)"                 if ($confirm -eq 'Y' -or $confirm -eq 'y') {                     $shouldCreate = $true                 }             }         }                  ako ($shouldCreate) {             Write-Host " Kreiranje zadatka..." - Boja prednjeg plana žuta             $createResult = New-SecureBootTask -Računarski $computer                          if ($createResult.Success) {                 Write-Host " Zadatak je uspešno kreiran" -Boja prednjeg plana – zelena boja prednjeg plana                 # Ponovo proveri status                 $status = Get-SecureBootTaskStatus - Računarski $computer                                  ako ($status. TaskExists) {                     $stateColor = if ($status. IsEnabled) { "Green" } else { "Red" }                     Write-Host " Država: $($status. TaskState)" -Boja prednjeg plana $stateColor                 }             }             else {                 Write-Host " Kreiranje nije uspelo: $($createResult.Error)" -Crvena boja prednjeg plana             }         }     }     else {         $stateColor = if ($status. IsEnabled) { "Green" } else { "Red" }         Write-Host " Država: $($status. TaskState)" -Boja prednjeg plana $stateColor                  ako ($status. LastRunTime - i $status. LastRunTime -ne [DateTime]::MinValue) {             Write-Host " Poslednji put pokreni: $($status. LastRunTime)" -Boja prednjeg plana siva         }         ako ($status. NextRunTime - i $status. NextRunTime -ne [DateTime]::MinValue) {             Write-Host " Sledeće pokretanje: $($status. NextRunTime)" -Boja prednjeg plana siva         }

        # Enable if requested and currently disabled         ako ($Enable -a -ne $status. IsEnabled) {             Write-Host " Omogućavanje zadatka..." -Boja prednjeg plana žuta             $enableResult = Enable-SecureBootTask -Računarski $computer             if ($enableResult.Success) {                 Write-Host " Zadatak je uspešno omogućen" - Zelena boja prednjeg plana                 # Ponovo proveri status                 $status = Get-SecureBootTaskStatus -Računarski $computer             }             else {                 Write-Host " Nije uspelo omogućavanje: $($enableResult.Error)" -Boja prednjeg plana crvene boje             }         }         elseif ($Enable -and $status. IsEnabled) {             Write-Host " Zadatak je već omogućen" - Zelena boja prednjeg plana         }     }     $results += $status     Write-Host "" }                  

# Summary Write-Host "========================================" - Boja prednjeg plana Cijan Write-Host " Rezime" - Boja prednjeg plana– cijan Write-Host "========================================" - Boja prednjeg plana Cijan

$enabled = ($results | Where-Object { $_.IsEnabled }).Count $disabled = ($results | Where-Object { $_. TaskExists -a -not $_. IsEnabled }). Raиuna $notFound = ($results | Where-Object { -not $_. TaskExists }). Raиuna $errors = ($results | Where-Object { $_. Greška }). Raиuna

Write-Host "Total Checked: $($results.Count)" Write-Host "Omogućeno: $enabled" - Zelena boja prednjeg plana if ($disabled -gt 0) { Write-Host "Onemogućeno: $disabled" -Boja prednjeg plana Crvena } if ($notFound -gt 0) { Write-Host "Nije pronađeno: $notFound" -Boja prednjeg plana Žuto } if ($errors -gt 0) { Write-Host "Greške: $errors" -Boja prednjeg plana Crvena }

# Return results for pipeline $results  

Da li vam je potrebna dodatna pomoć?

Želite još opcija?

Istražite pogodnosti pretplate, pregledajte kurseve za obuku, saznajte kako da obezbedite uređaj i još mnogo toga.