#Requires -RunAsAdministrator
$is_executed_privileged = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).
IsInRole([Security.Principal.WindowsBuiltInRole]::"Administrator")
if (-not $is_executed_privileged) {
if ((Get-Command wt.exe) -ne $null) {
Start-Process wt "powershell -File $PSCommandPath -ExecutionPolicy Bypass" -Verb RunAs
}
else {
Start-Process powershell "-File $PSCommandPath -ExecutionPolicy Bypass" -Verb RunAs
}
exit
}
Schedule multiple actions
$actions = (New-ScheduledTaskAction -Execute 'foo.ps1'), (New-ScheduledTaskAction -Execute 'bar.ps1')
$trigger = New-ScheduledTaskTrigger -Daily -At '9:15 AM'
$principal = New-ScheduledTaskPrincipal -UserId 'DOMAIN\user' -RunLevel Highest
$settings = New-ScheduledTaskSettingsSet -RunOnlyIfNetworkAvailable -WakeToRun
$task = New-ScheduledTask -Action $actions -Principal $principal -Trigger $trigger -Settings $settings
Register-ScheduledTask 'baz' -InputObject $task
Run hidden processes with administrative privileges regardless of currently logged on user
# untested script
$action = New-ScheduledTaskAction -Execute foo.exe -Argument "bar baz"
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 1) -RepetitionDuration ([Timespan]::MaxValue)
$principal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$settings = New-ScheduledTaskSettingsSet -MultipleInstances Parallel
Register-ScheduledTask -TaskName "tasknamehere" -TaskPath "\my\path" -Action $action -Trigger $trigger -Settings $settings -Principal $principal
Sources:
- New-ScheduledTask (ScheduledTasks) | Microsoft Learn
- New-ScheduledTaskPrincipal (ScheduledTasks) | Microsoft Learn
- In a PowerShell script, how can I check if I’m running with administrator privileges? - Server Fault
- Powershell: Set a Scheduled Task to run when user isn’t logged in - Stack Overflow
- powershell - List process for current user - Stack Overflow
- c# - Find out whether a Process is a System Process - Stack Overflow
Related:
[[List related notes]]
Tags: PowerShell Windows