Kopiér og indsæt dette eksempelscript, og rediger det efter behov for dit miljø:

<# . SYNOPSIS     Aktiverer den planlagte opgave Sikker bootstartopdatering.

.DESCRIPTION     Dette script sikrer, at den planlagte Windows Secure Boot Update-opgave     (\Microsoft\Windows\PI\Secure-Boot-Update) er aktiveret. Hvis det er deaktiveret,     det aktiverer det. Hvis opgaven er blevet slettet, kan den genoprettes.

.PARAMETER Action     Den handling, der skal udføres. Gyldige værdier: kontrollér, aktivér, opret     - check: Kontrollér kun opgavestatus     - aktivér: (standard) Aktivér opgaven, hvis den er deaktiveret. Hvis opgaven mangler, bliver du bedt om at oprette.– opret: Opret opgaven, hvis den ikke findes

.PARAMETER ComputerName     Valgfri. Matrix med computernavne, som opgaven skal kontrolleres/aktiveres på.Hvis det ikke er angivet, kører på den lokale computer.

.PARAMETER Credential     Valgfri. Legitimationsoplysninger til fjernadgang.

.PARAMETER Quiet     Undertrykker prompter og svarer automatisk Ja. Nyttig til automatisering.

.EXAMPLE     .\Enable-SecureBootTask.ps1     # Aktiverer opgavestatus på lokal computer

.EXAMPLE     .\Check-SecureBootScheduledTask.ps1 aktivere     # Aktiverer opgaven, hvis den er deaktiveret. Prompter at oprette, hvis den mangler.

.EXAMPLE     .\Check-SecureBootScheduledTask.ps1 oprette     # Opretter opgaven, hvis den blev slettet, kontrollerer derefter dens status

.EXAMPLE     .\Check-SecureBootScheduledTask.ps1 check -ComputerName "PC1", "PC2"     # Kontrollerer opgaven på fjerncomputere

.NOTES     Kræver administratorrettigheder for at aktivere eller oprette opgaven.Opgavesti: \Microsoft\Windows\PI\Secure-Boot-Update     Opgaven kører taskhostw.exe hver 12. time med administratorrettigheder.#>

[CmdletBinding(SupportsShouldProcess)] param(     [Parameter(Position=0)]     [ValidateSet('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" # Bemærk! Dette script kører på slutpunkter for at aktivere opgaven Sikker bootstartopdatering.

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

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

    $result = [PSCustomObject]@{         Computernavn = $Computer         TaskExists = $false         TaskState = $null         IsEnabled = $false         LastRunTime = $null         NextRunTime = $null         Fejl = $null     }

    try {         if ($Computer -eq $env:COMPUTERNAME -or $Computer -eq "localhost" -or $Computer -eq ".") {             # Brug schtasks.exe til mere pålidelig opgaveregistrering             $schtasksOutput = schtasks.exe /Query /TN "$TaskPath$TaskName" /FO CSV 2>&1                          if ($LASTEXITCODE -ne 0) {                 # Opgaven blev ikke fundet er ikke en fejl – det betyder blot, at opgaven ikke findes                 $result. TaskExists = $false                 returner $result             }                          # Fortolke CSV-output             $taskData = $schtasksOutput | ConvertFrom-Csv             if ($taskData) {                 $result. TaskExists = $true                 $result. TaskState = $taskData.Status                 $result. IsEnabled = ($taskData.Status -eq 'Ready' -or $taskData.Status -eq 'Running')                                  # Prøv at få næste kørselstid fra dataene                 if ($taskData.'Next Run Time' -and $taskData.'Next Run Time' -ne 'N/A') {                     prøv {                         $result. NextRunTime = [DateTime]::P arse($taskData.'Next Run Time')                     } fange { }                 }             }         }         ellers {             # Fjerncomputer – brug Invoke-Command med schtasks             $remoteResult = Invoke-Command -ComputerName $Computer -ScriptBlock {                 param($fullTaskName)                 $output = schtasks.exe /Query /TN $fullTaskName /FO CSV 2>&1                 @{                     ExitCode = $LASTEXITCODE                     Output = $output                 }             } -ArgumentList "$TaskPath$TaskName" -ErrorAction Stop

            if ($remoteResult.ExitCode -ne 0) {                 # Opgaven blev ikke fundet er ikke en fejl – det betyder blot, at opgaven ikke findes                 $result. TaskExists = $false                 returner $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 'Running')             }         }     }     catch {         $result. Fejl = $_. Undtagelse.Meddelelse     }

    return $result }

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

    $success = $false     $errorMsg = $null

    # Task definition - matches the original Windows Secure Boot Update task     # Bruger ComHandler med klassen SBServicing, kører som LocalSystem     $taskXml = @" <?xml version="1.0" encoding="UTF-16"?> <Task version="1.6" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">   <RegistrationInfo>     <Dato>2012-02-07T16:39:20</Dato>     <SecurityDescriptor>O:BAG:BAD:P(A;; FA;;; BA)(A;; FA;;; SY)(A;; FRFX;;; LS)</SecurityDescriptor>     <kilde>'$(@%SystemRoot%\system32\TpmTasks.dll,-601)</Source>     <Forfatter>'$(@%SystemRoot%\system32\TpmTasks.dll,-600)</Author>     <Beskrivelse>'$(@%SystemRoot%\system32\TpmTasks.dll,-604)</Description>     <URI>\Microsoft\Windows\PI\Secure-Boot-Update</URI->   </RegistrationInfo>   <Principals>     <Principal id="LocalSystem">       <UserId->S-1-5-18-</UserId->     </Principal>   </Principals>   <indstillinger>     <Tillad ikkeStartIfOnBatteries>falsk</DisallowStartIfOnBatteries>     ><0 StopIfGoingOnBatteries>falsk</StopIfGoingOnBatteries>     ><4 ExecutionTimeLimit>PT1H</ExecutionTimeLimit>     ><8 MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>     <StartNår tilgængelig>sand</StartNår tilgængelig>     <inaktive indstillinger>       <StopOnIdleEnd>sand</StopOnIdleEnd>       <RestartOnIdle>falsk</RestartOnIdle>     </IdleSettings>     <UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>   </> Indstillinger   <udløsere>     <BootTrigger->       <forsinkelse>PT5M</Delay>       <gentagelse>         <interval>PT12H</Interval>       </Gentagelse>     </BootTrigger>   </Udløsere>   <Actions Context="LocalSystem">     <ComHandler->       <ClassId->{5014B7C8-934E-4262-9816-887FA745A6C4}</ClassId>       <data><! [CDATA[SBServicing]]></Data>     </ComHandler>   </Actions> </>Opgave " @

    try {         if ($Computer -eq $env:COMPUTERNAME -or $Computer -eq "localhost" -or $Computer -eq ".") {             if ($PSCmdlet.ShouldProcess("$TaskPath$TaskName", "Create scheduled task")) {                 # Gem XML som midlertidig fil, og importér                 $tempFile = [System.IO.Path]::GetTempFileName()                 $taskXml | Out-File -FilePath $tempFile -Encoding 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                 } ellers {                     $errorMsg = $output -joinforbindelse " "                 }             }         }         ellers {             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 -Encoding Unicode -Force                     $output = schtasks.exe /Create /TN "$taskPath$taskName" /XML $tempFile /F 2>&1                     Remove-Item $tempFile -Force -ErrorAction SilentlyContinue                     @{ ExitCode = $LASTEXITCODE; Output = $output }                 } -ArgumentList $TaskPath, $TaskName, $taskXml -ErrorAction Stop                                  hvis ($result. ExitCode -eq 0) {                     $success = $true                 } ellers {                     $errorMsg = $result. Output -join " "                 }             }         }     }     catch {         $errorMsg = $_. Undtagelse.Meddelelse     }

    return @{         Success = $success         Fejl = $errorMsg     } }

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

    $success = $false     $errorMsg = $null

    try {         if ($Computer -eq $env:COMPUTERNAME -or $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                 } ellers {                     $errorMsg = $output -join " "                 }             }         }         ellers {             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; Output = $output }                 } -ArgumentList "$TaskPath$TaskName" -ErrorAction Stop                                  hvis ($result. ExitCode -eq 0) {                     $success = $true                 } ellers {                     $errorMsg = $result. Output -join " "                 }             }         }     }     catch {         $errorMsg = $_. Undtagelse.Meddelelse     }

    return @{         Success = $success         Fejl = $errorMsg     } }

# Main execution Write-Host "" Write-Host "========================================" -Forgrundsfarve cyan Write-Host " Secure Boot Update Task Enabler" -ForegroundColor Cyan Write-Host "========================================" -Forgrundsfarve cyan Write-Host "" Write-Host "Opgave: $TaskPath$Opgavenavn" -Forgrundsfarve grå Write-Host ""

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

$results = @()

foreach ($computer in $targets) {     Write-Host "Kontrollerer: $computer" -Forgrundsfarve gul     $status = Get-SecureBootTaskStatus -Computer $computer     hvis ($status. Fejl) {         Write-Host " Fejl: $($status. Fejl)" -Forgrundsfarve rød     }     elseif (-not $status. TaskExists) {         Write-Host " Opgaven findes ikke på dette system" -Forgrundsfarve rød         # Opret, hvis der anmodes om det, eller spørg, om Aktivér blev angivet         $shouldCreate = $Create         if (-not $shouldCreate -and $Enable) {             Write-Host ""             Write-Host " Opgaven er muligvis blevet slettet." -Forgrundsfarve gul             if ($Quiet) {                 Write-Host " Automatisk oprettelse af opgave (stillet tilstand)" -Forgrundsfarve cyan                 $shouldCreate = $true             } ellers {                 $confirm = Read-Host " Vil du genskabe opgaven?                    (Å/N)"                 if ($confirm -eq 'Y' -or $confirm -eq 'y') {                     $shouldCreate = $true                 }             }         }                  if ($shouldCreate) {             Write-Host " Opretter opgave..." -Forgrundsfarve gul             $createResult = New-SecureBootTask -Computer $computer                          if ($createResult.Success) {                 Write-Host " Opgaven blev oprettet" -Forgrundsfarve grøn                 # Kontrollér status igen                 $status = Get-SecureBootTaskStatus -Computer $computer                                  hvis ($status. TaskExists) {                     $stateColor = hvis ($status. IsEnabled) { "Grøn" } ellers { "Rød" }                     Write-Host " Stat: $($status. TaskState)" -Forgrundsfarve $stateColor                 }             }             ellers {                 Write-Host " Kunne ikke oprettes: $($createResult.Error)" -Forgrundsfarve rød             }         }     }     ellers {         $stateColor = hvis ($status. IsEnabled) { "Grøn" } ellers { "Rød" }         Write-Host " Stat: $($status. TaskState)" -Forgrundsfarve $stateColor                  hvis ($status. LastRunTime - og $status. LastRunTime -ne [DateTime]::MinValue) {             Write-Host " Sidste kørsel: $($status. LastRunTime)" -Forgrundsfarve grå         }         hvis ($status. NextRunTime - og $status. NextRunTime -ne [DateTime]::MinValue) {             Write-Host " Næste kørsel: $($status. NextRunTime)" -Forgrundsfarve grå         }

        # Enable if requested and currently disabled         hvis ($Enable -og -ikke $status. IsEnabled) {             Write-Host " Aktiverer opgave..." -Forgrundsfarve gul             $enableResult = Enable-SecureBootTask -Computer $computer             if ($enableResult.Success) {                 Write-Host " Opgaven er aktiveret" -Forgrundsfarve grøn                 # Kontrollér status igen                 $status = Get-SecureBootTaskStatus -Computer $computer             }             ellers {                 Write-Host " Kunne ikke aktiveres: $($enableResult.Error)" -Forgrundsfarve rød             }         }         elseif ($Enable -og $status. IsEnabled) {             Write-Host " Opgaven er allerede aktiveret" -Forgrundsfarve grøn         }     }     $results += $status     Write-Host "" }                  

# Summary Write-Host "========================================" -Forgrundsfarve cyan Write-Host " Oversigt" -Forgrundsfarve cyan Write-Host "========================================" -Forgrundsfarve cyan

$enabled = ($results | Where-Object { $_.IsEnabled }).Count $disabled = ($results | Where-Object { $_. TaskExists -and -not $_. IsEnabled }). Tælle $notFound = ($results | Where-Object { -ikke $_. TaskExists }). Tælle $errors = ($results | Where-Object { $_. Fejl }). Tælle

Write-Host "Total Checked: $($results.Count)" Write-Host "Aktiveret: $enabled" -Forgrundsfarve grøn if ($disabled -gt 0) { Write-Host "Disabled: $disabled" -ForegroundColor Red } if ($notFound -gt 0) { Write-Host "Ikke fundet: $notFound" -Forgrundsfarve gul } if ($errors -gt 0) { Write-Host "Fejl: $errors" -Forgrundsfarve rød }

# Return results for pipeline $results  

Har du brug for mere hjælp?

Vil du have flere indstillinger?

Udforsk abonnementsfordele, gennemse kurser, få mere at vide om, hvordan du sikrer din enhed og meget mere.