我刚刚设置了一个新的 Windows Server 2019 实例,并尝试通过 Windows 任务计划程序运行任务(C# 控制台应用程序)。我已将其设置为以某个 Windows 用户身份登录,该用户具有“管理员”权限。但是,当我尝试运行该任务(按计划或通过登录并按需运行)时,会出现错误:
“访问被拒绝”,错误代码为 0x80070005。到目前为止我尝试过的事情:
没有任何效果...我想知道其他人是否在 Windows Server 2019 中遇到过这个问题,以及他们如何运行计划任务?
在 Windows 7 SP1 中我遇到了同样的问题。没有任何效果。
我找到了解决方法:
1) 在任务计划程序中导出任务(到.xml)。
2) 在任务计划程序中删除任务。
3)编辑.xml文件:
3.1) 在第二个字符串中将
Task version="1.2"
替换为Task version="1.3"
<UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
替换为<UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
,或者如果字符串<UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
不存在,则在字符串 <Settings>
后添加字符串<UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
。在尝试在 Powershell 上创建计划任务以将文件复制到映射驱动器时,我遇到了类似的挑战。
以下是我的计划任务命令:
$TaskName = "FileSync"
$Description = "This task will run periodically to sync .fin files from a specified source directory to a specified destination directory"
$ScriptPath = "C:\Users\my_userDesktop\file_sync.ps1"
$UserAccount = "COMP1\my_user"
$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-ExecutionPolicy Bypass -File $ScriptPath"
$Principal = New-ScheduledTaskPrincipal -UserID $UserAccount -LogonType ServiceAccount -RunLevel Highest
$Trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 1) -RepetitionDuration ([System.TimeSpan]::MaxValue)
Register-ScheduledTask -TaskName $TaskName -Action $Action -Description $Description -Trigger $Trigger -Principal $Principal
但是,当命令运行时,我收到以下错误:
Register-ScheduledTask : Access is denied.
At line:1 char:1
+ Register-ScheduledTask -TaskName $TaskName -Action $Action -Description $Descrip ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (PS_ScheduledTask:Root/Microsoft/...S_ScheduledTask) [Register-Schedul
edTask], CimException
+ FullyQualifiedErrorId : HRESULT 0x80070005,Register-ScheduledTask
这是我修复它的方法:
问题的原因是以下中的
-RunLevel Highest
命令:
$Principal = New-ScheduledTaskPrincipal -UserID $UserAccount -LogonType ServiceAccount -RunLevel Highest
-RunLevel Highest
注册一个计划任务,该任务在具有最高权限的管理员用户组的登录成员下运行。
这意味着,当您将
-RunLevel
设置为 Highest
时,它要求您以管理员身份安排 Powershell 作业,也就是说,您必须 以管理员身份运行 Powershell 来安排作业,而不仅仅是启动/运行 Powershell向普通用户发送广告以安排作业。
这将允许计划任务以具有管理权限的最高级别运行。
仅此而已。
我希望这有帮助
我知道这是一个老问题,但当您搜索此问题时,它是最重要的结果之一。就我而言,问题是我用来运行任务的服务帐户无权访问包含要运行的 exe 的目录。