任务计划程序不支持“以最高权限运行”和“运行天气用户是不是登录”选项

Posted

技术标签:

【中文标题】任务计划程序不支持“以最高权限运行”和“运行天气用户是不是登录”选项【英文标题】:Task Scheduler is not supporting option "Run with highest Privilege" and "Run weather user is logged on or not"任务计划程序不支持“以最高权限运行”和“运行天气用户是否登录”选项 【发布时间】:2017-11-09 15:10:51 【问题描述】:

我正在尝试在任务计划程序上安排任务,除非我勾选“以最高权限运行”或“运行天气用户是否登录”,否则一切正常

一旦我勾选此选项,调度程序就会停止触发我的脚本。

Script-.Bat 文件使用 Power Shell 命令。

谁能弄清楚出了什么问题?

已编辑-(将文件位置从驱动器更改为网络驱动器)

@Echo Off

:: SDate=DAYMONTHYEAR FORMAT of Systemdate
::set SDate=%date:~7,2%%date:~4,2%%date:~10,4%

::Variable for folder path
for /D %%d in ("\\Server\Schd File\AA\*") do (
for %%a in ("%%d\*.*") do (SET "FPath=%%~dpa"
Set "FName=%%~na" )
)

For /F "Tokens=4-9 Delims=-" %%A In ("%FName%") Do (
    Set "Freq=%%B"
    Set "ADate=%%F%%E%%D"
)

Set "DFormat=ddMMyyyy"

IF %Freq% == Daily (
For /F UseBackQ %%A In (
    `Powershell "([datetime]::ParseExact('%ADate%','%DFormat%',[System.Globalization.CultureInfo]::CurrentCulture)).AddDays(-1).ToString('ddMMyyyy')"`
) Do Set "DateF=%%A"
)

IF %Freq% == Weekly ( 
For /F UseBackQ %%A In (
    `Powershell "([datetime]::ParseExact('%ADate%','%DFormat%', [System.Globalization.CultureInfo]::CurrentCulture)).AddDays(-7).ToString('ddMMyyyy')"`
) Do Set "DateF=%%A"
)

IF %Freq% == Monthly (
For /F UseBackQ %%A In (
    `Powershell "([datetime]::ParseExact('%ADate%','%DFormat%', [System.Globalization.CultureInfo]::CurrentCulture)).AddMonths(-1).ToString('MMMyyyy')"`
) Do Set "DateF=%%A"
)


mkdir "%FPath%%Freq%\%DateF%"
move "%FPath%\%FName%.*" "%FPath%%Freq%\%DateF%\"

GoTo :EOF

【问题讨论】:

任务历史记录选项卡中有内容吗?与其说是编码问题,不如说是权限问题。 @restless1987- 我尝试为“以最高权限运行”或“运行天气用户是否登录”运行简单的脚本,它可以正常工作。但是如果我选择“仅在用户登录时运行”选项,上述脚本工作正常。我怀疑这是由于 Power Shell 或其他原因。 脚本是否运行? (如果您将日期写入文件(%time% >> c:\...\test.txt?),完成了吗?)或者只是 PowerShell 命令没有运行?如果您尝试使用 -ExecutionPolicy bypass 运行 PowerShell 命令会怎样? @iRon - 当我选择“仅当用户登录时运行”时,脚本运行。我不太喜欢编写脚本,所以不知道'ExecutionPolicy bypass'?我尝试以最高权限运行简单的 Xcopy commant,对于所有用户来说,它都可以正常工作。 今天早上我尝试运行脚本,直到 ADate 变量(来自上面的脚本)具有最高权限和运行天气用户登录与否,仍然无法正常工作。 【参考方案1】:

Vista 及之后的计划任务安全性进行了重大改革,以防止黑客安装可以访问网络资源的计划任务。

当您将任务设置为运行时,无论用户是否登录,您都必须将用户凭据设置为具有运行任务所需权限的用户。该用户还必须设置本地策略以允许用户运行批处理文件。

此外,当用户未登录时,任务计划程序使用“用户服务”(S4U) 身份验证,拒绝用户访问任何网络功能。假设您的“D:\AA*”路径是本地驱动器,这可能不是问题,但如果它是映射的网络驱动器,则会出现问题。

“以最高权限运行”不会授予指定用户更高的权限,而是在安装 Windows 时创建的系统管理员帐户的完全独立的安全令牌下运行。

https://technet.microsoft.com/en-us/library/cc722152(v=ws.11).aspx

https://technet.microsoft.com/en-us/library/cc732613(v=ws.10).aspx

https://technet.microsoft.com/en-us/library/ee844140(v=ws.10).aspx

https://superuser.com/questions/640962/why-cant-a-task-scheduler-job-access-a-mapped-network-drive/782836#782836

我发现在夜间运行需要网络访问的任务的唯一解决方案是让机器运行并让用户登录。

【讨论】:

以上是关于任务计划程序不支持“以最高权限运行”和“运行天气用户是不是登录”选项的主要内容,如果未能解决你的问题,请参考以下文章

如何在 VBScript 中指定“以最高权限运行”?

20145306张文锦《网络对抗》恶意代码分析

如何使用 C# 将 Windows 系统时钟设置为正确的本地时间?

如何使用具有特权的 schtask 运行任务?

如何区分任务计划程序 1.0 和任务计划程序 2.0?

通过bat建立的定时任务与计划任务程序的区别