# Fastvue certificate-renewal scheduled-task example

Inspect the recovered PowerShell example for scheduling Fastvue certificate renewal. It requires elevation and a renewal-script path; it is reference text, not an executed or validated task installer.

!!!warning Source-derived reference
These notes were recovered from OneNote. Configuration, permissions and operating results have not been freshly verified. Confirm the applicable authority and environment before acting.
!!!

## New-FastvueCertificateRenewalTask

\# Scheduled Task Creation Script for Certificate Renewal

\# Run this script with elevated permissions to create the scheduled task

param(

\[Parameter(Mandatory=\$true)\]

\[string\]\$Domain,

\[Parameter(Mandatory=\$false)\]

\[string\]\$ScriptPath = "C:\Scripts\Update-FastvueCertificate.ps1",

\[Parameter(Mandatory=\$false)\]

\[string\]\$TaskName = "Fastvue SSL Certificate Renewal",

\[Parameter(Mandatory=\$false)\]

\[string\]\$SiteName = "Default Web Site"

)

\# Check if running as Administrator

if (-not (\[Security.Principal.WindowsPrincipal\] \[Security.Principal.WindowsIdentity\]::GetCurrent()).IsInRole(\[Security.Principal.WindowsBuiltInRole\] "Administrator")) {

Write-Error "This script must be run as Administrator"

exit 1

}

try {

Write-Host "Creating scheduled task for SSL certificate renewal" -ForegroundColor Green

\# Create the action

$actionArgs = "-NoProfile -ExecutionPolicy RemoteSigned -Command \`"& '$ScriptPath' -Domain '$Domain' -SiteName '$SiteName'\`""

``` powershell
$action = New-ScheduledTaskAction -Execute "pwsh.exe" -Argument $actionArgs
```

\# Create the trigger (daily between 1am and 1:45am)

``` powershell
$trigger = New-ScheduledTaskTrigger -Daily -At 1am -RandomDelay (New-TimeSpan -Minutes 45)
```

\# Create task settings

``` powershell
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable -RunOnlyIfNetworkAvailable -DontStopOnIdleEnd
```

\# Create principal with highest privileges

``` powershell
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
```

\# Register the task

Register-ScheduledTask -TaskName \$TaskName -Action \$action -Trigger \$trigger -Settings \$settings -Principal \$principal -Description "Automated SSL certificate renewal using Posh-ACME with IIS binding updates"

Write-Host "Scheduled task '\$TaskName' created successfully" -ForegroundColor Green

Write-Host "Task details:" -ForegroundColor Cyan

Write-Host " - Runs daily between: 1am and 1:45am" -ForegroundColor White

Write-Host " - Domain: \$Domain" -ForegroundColor White

Write-Host " - Site: \$SiteName" -ForegroundColor White

Write-Host " - Script: \$ScriptPath" -ForegroundColor White

Write-Host " - Runs as: SYSTEM with highest privileges" -ForegroundColor White

\# Show the created task

``` powershell
Get-ScheduledTask -TaskName $TaskName | Format-Table -AutoSize
```

Write-Host "You can view logs at: C:\Scripts\Logs\CertRenewal.log" -ForegroundColor Yellow

Write-Host "To test the task manually, run: Start-ScheduledTask -TaskName '\$TaskName'" -ForegroundColor Yellow

} catch {

Write-Error "Failed to create scheduled task: $($\_.Exception.Message)"

exit 1

}

## Related guidance

- [Topic overview](Introduction.md)
- [Source review status](../../review/Review-status.md)
