powershell - 使用 PowerShell 修改具有最高权限的任务的触发器
问题描述
我有一个 PowerShell 脚本,它读取作业名称和触发器的 csv 文件,然后使用 Set-ScheduledTask cmdlet 更新任务计划程序上的作业触发器。我能够更新作业的触发器。但很少有任务以最高权限运行。我的脚本在那里失败,说“访问被拒绝”
下面是我使用的代码:
$user= "SYSTEM\serviceaccount" # Specify the account to run the script
$password="password"
$mySettings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
$pricipalSettings= New-ScheduledTaskPrincipal -UserId $user -LogonType Password -RunLevel Highest
Set-ScheduledTask -TaskPath $taskPath -TaskName $jobName -User $user -Password $password -Trigger $TriggerFinal -Settings $mySettings
下面是我得到的错误
Set-ScheduledTask : Access is denied.
At C:\UpdateTriggers.ps1:50 char:9
+ Set-ScheduledTask -TaskPath $taskPath -TaskName $jobName -Trigger $Trigg ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (PS_ScheduledTask:Root/Microsoft/...S_ScheduledTask) [Set-ScheduledTask], CimException
如果需要任何详细信息,请告诉我。
解决方案
为了获得DOMAIN
,您只需在 CMD 中执行此操作:echo %userdomain%
此脚本创建具有最高级别权限的任务调度程序。
$User= "DOMAIN\user"
$Trigger = New-ScheduledTaskTrigger -Once -At $TriggerInfo
$Action = New-ScheduledTaskAction -Execute 'PowerShell.exe' -Argument "-NonInteractive -NoLogo -NoProfile -File c:/Users/user/documents/script.ps1"
Register-ScheduledTask -TaskName "TaskScheduler" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force
检查这个:
-RunLevel Highest –Force