通过Powershell作为System32创建任务

问题描述

我想通过Powershell创建任务,但出现此错误

Register-ScheduledTask:访问被拒绝 在C:\ Users \ 4TL4S \ Documents \ Coding \ Bot_Dev \ juri_exc \ ui \ setup_bot_task.ps1:8 Zeichen:1

  • Register-ScheduledTask“ Bot_Activation” -InputObject $ Task
  • db.response_graphs.aggregate(
        [
            {
                $match : {
                    "Response_measure" : "MasksMandatory"
                }
            },{
                $project : {
                    date_end: { $replaceAll: { input: "$date_end",find: "NA",replacement: "2020-08-01" }}
                }
            }
            ]
        )
    
  • CategoryInfo:PermissionDenied:(PS_ScheduledTask:Root / Microsoft / ... S_ScheduledTask) [Register-ScheduledTask],CimException
  • FullyQualifiedErrorId:HRESULT 0x80070005,Register-ScheduledTask

我认为这与“管理员”没有足够的权限有关...我该如何解决?是否可以将Task创建为System32?

这是脚本:

这是调用脚本的代码

$Action = New-ScheduledTaskAction -Execute "cmd.exe"
$Trigger = New-ScheduledTaskTrigger -At "0am" -DaysOfWeek 1 -Weekly
$Principle = New-ScheduledTaskPrincipal "Administrator" -RunLevel Highest
$Settings = New-ScheduledTaskSettingsSet
$Task = New-ScheduledTask -Action $Action -Principal $Principle -Trigger $Trigger -Settings $Settings
Register-ScheduledTask "Bot_Activation" -InputObject $Task 

解决方法

您需要使用“以管理员身份运行”选项来运行此提升的会话。

您可以将Start-Process与参数-Verb和参数runas一起使用。看这个测试

Start-Process powershell -ArgumentList @'
$Action = New-ScheduledTaskAction -Execute "cmd.exe"
$Trigger = New-ScheduledTaskTrigger -At "0am" -DaysOfWeek 1 -Weekly
$Principle = New-ScheduledTaskPrincipal "Administrator" -RunLevel Highest
$Settings = New-ScheduledTaskSettingsSet
$Task = New-ScheduledTask -Action $Action -Principal $Principle -Trigger $Trigger -Settings $Settings
Register-ScheduledTask "Bot_Activation" -InputObject $Task 
'@ -Verb runas