OLULINE Seda näidisskripti sisaldav artikkel on kasutuselt kõrvaldatud. Alates Windowsi värskendustest, mis on välja antud 12. mail 2026 ja pärast seda, asub näidisskript teie seadme kaustas %systemroot%\SecureBoot\ExampleRolloutScripts .

Kopeerige ja kleepige see näidisskript ning muutke seda vastavalt oma keskkonnale.

<# . SÜNOPSIS     Lubab secure Boot Update'i ajastatud toimingu.

.DESCRIPTION     See skript tagab Windowsi turvalise algkäivituse värskenduse ajastatud toimingu     (\Microsoft\Windows\PI\Secure-Boot-Update) on lubatud. Kui see on keelatud,     see lubab selle. Kui tööülesanne on kustutatud, saab selle uuesti luua.

.PARAMETER Action     Sooritatav toiming. Sobivad väärtused: kontrollimine, lubamine, loomine     - kontroll: kontrollige ainult tööülesande olekut     - enable: (vaikimisi) Lubage ülesanne, kui see on keelatud. Kui ülesanne puudub, palutakse see luua.- loomine: looge tööülesanne, kui seda pole olemas

.PARAMETER ComputerName     Vabatahtlik. Arvutinimede massiiv, mille puhul ülesannet kontrollida/lubada.Kui seda pole määratud, töötab see kohalikus arvutis.

.PARAMETER Credential     Vabatahtlik. Kaugarvuti juurdepääsu identimisteave.

.PARAMETER Quiet     Tõkestab viibad ja annab automaatselt vastuse Jah. Kasulik automatiseerimiseks.

.EXAMPLE     .\Enable-SecureBootTask.ps1     # Lubab tööülesande oleku kohalikus arvutis

.EXAMPLE     .\Check-SecureBootScheduledTask.ps1 lubamine     # Lubab ülesande, kui see on keelatud. Juhised luua, kui see puudub.

.EXAMPLE     .\Check-SecureBootScheduledTask.ps1 loomine     # Loob kustutamisel tööülesande ja kontrollib selle olekut

.EXAMPLE     .\Check-SecureBootScheduledTask.ps1 check -ComputerName "PC1", "PC2"     # Kontrollib ülesannet kaugarvutites

.NOTES     Tööülesande lubamiseks või loomiseks on vaja administraatoriõigusi.Tööülesande tee: \Microsoft\Windows\PI\Secure-Boot-Update     Ülesanne käivitatakse taskhostw.exe iga 12 tunni järel ülemaõigustega.#>

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

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

    [Parameter()]     [PSCredential]$Credential,

    [Parameter()]     [Alias('Force', 'Silent')]     [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" # Märkus. See skript töötab lõpp-punktides, et lubada Secure Boot Update'i toiming.

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

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

    $result = [PSCustomObject]@{         ComputerName = $Computer         TaskExists = $false         TaskState = $null         IsEnabled = $false         LastRunTime = $null         NextRunTime = $null         Tõrge = $null     }

    try {         if ($Computer -eq $env:COMPUTERNAME -või $Computer -eq "localhost" -or $Computer -eq ".") {             # Kasutage schtasks.exe tööülesannete tuvastamiseks             $schtasksOutput = schtasks.exe /Query /TN "$TaskPath$TaskName" /FO CSV 2>&1                          if ($LASTEXITCODE -ne 0) {                 # Ülesannet ei leitud pole tõrge – tähendab lihtsalt, et ülesannet pole olemas                 $result. TaskExists = $false                 tagastus $result             }                          # CSV-väljundi sõelumine             $taskData = $schtasksOutput | ConvertFrom-Csv             if ($taskData) {                 $result. TaskExists = $true                 $result. TaskState = $taskData.Status                 $result. IsEnabled = ($taskData.Status -eq 'Ready' -or $taskData.Status -eq 'Töötab')                                  # Proovige andmetest järgmist käitusaega                 if ($taskData.'Next Run Time' -and $taskData.'Next Run Time' -ne 'N/A') {                     proovige {                         $result. NextRunTime = [KuupäevKellaaeg]::P arse($taskData.'Järgmine käitusaeg')                     } püüdmine { }                 }             }         }         else {             # Kaugarvuti – Invoke-Command kasutamine schtasksiga             $remoteResult = Invoke-Command -ComputerName $Computer -ScriptBlock {                 param($fullTaskName)                 $output = schtasks.exe /Query /TN $fullTaskName /FO CSV 2>&1                 @{                     ExitCode = $LASTEXITCODE                     Väljund = $output                 }             } - ArgumentList "$TaskPath$TaskName" -ErrorAction Stop

            if ($remoteResult.ExitCode -ne 0) {                 # Ülesannet ei leitud pole tõrge – tähendab lihtsalt, et ülesannet pole olemas                 $result. TaskExists = $false                 tagastus $result             }

            $taskData = $remoteResult.Output | ConvertFrom-Csv             if ($taskData) {                 $result. TaskExists = $true                 $result. TaskState = $taskData.Status                 $result. IsEnabled = ($taskData.Status -eq 'Ready' -or $taskData.Status -eq 'Töötab')             }         }     }     püüdmine : {         $result. Tõrge = $_. Erand.Sõnum     }

    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     # Kasutab koos klassiga SBServicing ComHandlerit, töötab localSystemina     $taskXml = @" <?xml version="1.0" encoding="UTF-16"?> <Ülesande versioon="1.6" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">   <RegistrationInfo>     <kuupäev>2012-02-07T16:39:20</Kuupäev>     <SecurityDescriptor>O:BAG:BAD:P(A;; PV;;; BA)(A;; PV;;; SY)(A;; FRFX;;; LS)</SecurityDescriptor>     <allika>'$(@%SystemRoot%\system32\TpmTasks.dll,-601)</Source>     <Autor>'$(@%SystemRoot%\system32\TpmTasks.dll,-600)</Author>     <kirjeldus>'$(@%SystemRoot%\system32\TpmTasks.dll,-604)</Description>     <URI>\Microsoft\Windows\PI\Secure-Boot-Update</URI>   </RegistrationInfo>   <subjektid>     <principal id="LocalSystem">       <UserId>S-1-5-18</UserId>     </principal>   </Principals>   <sätete>     <DisallowStartIfOnBatteries>väärad</DisallowStartIfOnBatteries>     ><0 StopIfGoingOnBatteries>väärad</StopIfGoingOnBatteries>     ><4 ExecutionTimeLimit>PT1H</ExecutionTimeLimit>     ><8 MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>     <StartWhenAvailable>tõene</StartWhenAvailable>     <IdleSettings>       <StopOnIdleEnd>tõene</StopOnIdleEnd>       <RestartOnIdle>väär</RestartOnIdle>     </IdleSettings>     <UseUnifiedSchedulingEngine>tõene</UseUnifiedSchedulingEngine>   </Settings>   <päästikud>     <BootTrigger>       PT5M-</Delay>>viivitus < viivitus       <kordus>         <interval>PT12H</interval>       </Kordus>     </BootTrigger>   </Triggers>   <Actions Context="LocalSystem">     <ComHandler>       <ClassId>{5014B7C8-934E-4262-9816-887FA745A6C4}</ClassId>       <andmete><! [CDATA[SBServicing]]></Data>     </ComHandler>   </Actions> </Task> " @

    try {         if ($Computer -eq $env:COMPUTERNAME -või $Computer -eq "localhost" -or $Computer -eq ".") {             if ($PSCmdlet.ShouldProcess("$TaskPath$TaskName", "Create scheduled task")) {                 # Salvesta XML ajutise failina ja importimiseks                 $tempFile = [System.IO.Path]::GetTempFileName()                 $taskXml | Out-File -FilePath $tempFile -Kodeerimine Unicode –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                 } else {                     $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 -Kodeerimine Unicode –Force                     $output = schtasks.exe /Create /TN "$taskPath$taskName" /XML $tempFile /F 2>&1                     Remove-Item $tempFile –Force – ErrorAction SilentlyContinue                     @{ ExitCode = $LASTEXITCODE; Väljund = $output }                 } – ArgumentListi $TaskPath, $TaskName, $taskXml -ErrorAction Stop                                  kui ($result. ExitCode -eq 0) {                     $success = $true                 } else {                     $errorMsg = $result. Väljund - join " "                 }             }         }     }     püüdmine : {         $errorMsg = $_. Erand.Sõnum     }

    return @{         Õnnestus = $success         Tõrge = $errorMsg     } }

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

    $success = $false     $errorMsg = $null

    try {         if ($Computer -eq $env:COMPUTERNAME -või $Computer -eq "localhost" -or $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                 } else {                     $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; Väljund = $output }                 } - ArgumentList "$TaskPath$TaskName" -ErrorAction Stop                                  kui ($result. ExitCode -eq 0) {                     $success = $true                 } else {                     $errorMsg = $result. Väljund - join " "                 }             }         }     }     püüdmine : {         $errorMsg = $_. Erand.Sõnum     }

    return @{         Õnnestus = $success         Tõrge = $errorMsg     } }

# Main execution Write-Host "" Write-Host "========================================" – esiplaanivärvivärvi tsüaan Write-Host " Secure Boot Update Task Enabler" -ForegroundColor Cyan Write-Host "========================================" – esiplaanivärvivärvi tsüaanWrite-Host Write-Host "Task: $TaskPath$TaskName" -ForegroundColor Gray Write-Host

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

$results = @()

foreach ($computer in $targets) {     Write-Host "Checking: $computer" –ForegroundColor Yellow     $status = Get-SecureBootTaskStatus – arvuti $computer     if ($status. Tõrge) {         Write-Host " Tõrge: $($status. Error)" -ForegroundColor Red     }     elseif (mitte $status. TaskExists) {         Write-Host " Tööülesannet pole selles süsteemis olemas" –Esiplaanivärv: punane         # Loo taotluse korral või küsi, kui luba on määratud         $shouldCreate = $Create         if (-not $shouldCreate -and $Enable) {             Write-Host             Write-Host " Tööülesanne võib olla kustutatud." –Esiplaanivärvi kollane             kui ($Quiet) {                 Write-Host " Auto-creating task (Quiet mode)" -ForegroundColor Cyan                 $shouldCreate = $true             } else {                 $confirm = Read-Host " Kas soovite tööülesande uuesti luua?                    (Y/N)"                 if ($confirm -eq 'Y' -or $confirm -eq 'y') {                     $shouldCreate = $true                 }             }         }                  if ($shouldCreate) {             Write-Host "Creating task..." -ForegroundColor Yellow             $createResult = New-SecureBootTask – arvuti $computer                          if ($createResult.Success) {                 Write-Host " Ülesanne on loodud" – esiplaanivärv: roheline                 # Kontrolli olekut uuesti                 $status = Get-SecureBootTaskStatus – arvuti $computer                                  if ($status. TaskExists) {                     $stateColor = if ($status. IsEnabled) { "Green" } else { "Red" }                     Write-Host " Olek: $($status. TaskState)" - ForegroundColor $stateColor                 }             }             else {                 Write-Host " Loomine nurjus: $($createResult.Error)" -Esiplaanivärv: punane             }         }     }     else {         $stateColor = if ($status. IsEnabled) { "Green" } else { "Red" }         Write-Host " Olek: $($status. TaskState)" - ForegroundColor $stateColor                  if ($status. LastRunTime – ja $status. LastRunTime –ne [DateTime]::MinValue) {             Write-Host " Viimane käitus: $($status. LastRunTime)" – esiplaanivärvi hall         }         if ($status. NextRunTime – ja $status. NextRunTime – ne [DateTime]::MinValue) {             Write-Host " Järgmine käitus: $($status. NextRunTime)" – esiplaanivärvi hall         }

        # Enable if requested and currently disabled         if ($Enable -and -not $status. IsEnabled) {             Write-Host "Enabling task..." –ForegroundColor Yellow             $enableResult = Enable-SecureBootTask – arvuti $computer             if ($enableResult.Success) {                 Write-Host " Task enabled successfully" -ForegroundColor Green                 # Kontrolli olekut uuesti                 $status = Get-SecureBootTaskStatus – arvuti $computer             }             else {                 Write-Host " Lubamine nurjus: $($enableResult.Error)" -Esiplaanivärvi punane             }         }         elseif ($Enable -and $status. IsEnabled) {             Write-Host " Ülesanne on juba lubatud" – esiplaanivärvi roheline värv         }     }     $results += $status     Write-Host }                  

# Summary Write-Host "========================================" – esiplaanivärvivärvi tsüaan Write-Host " Summary" -ForegroundColor Cyan Write-Host "========================================" – esiplaanivärvivärvi tsüaan

$enabled = ($results | Where-Object { $_.IsEnabled }).Count $disabled = ($results | Where-Object { $_. TaskExists -and -not $_. IsEnabled }). Loendus $notFound = ($results | Where-Object { -not $_. TaskExists }). Loendus $errors = ($results | Where-Object { $_. Tõrge }). Loendus

Write-Host "Total Checked: $($results.Count)" Write-Host "Enabled: $enabled" –ForegroundColor Green if ($disabled -gt 0) { Write-Host "Disabled: $disabled" -ForegroundColor Red } if ($notFound -gt 0) { Write-Host "Ei leitud: $notFound" -Esiplaanivärvi kollane } if ($errors -gt 0) { Write-Host "Errors: $errors" -ForegroundColor Red }

# Return results for pipeline $results  

Kas vajate veel abi?

Kas soovite rohkem valikuvariante?

Siin saate tutvuda tellimusega kaasnevate eelistega, sirvida koolituskursusi, õppida seadet kaitsma ja teha veel palju muud.