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

时间:2017-06-08 04:27:50

标签: batch-file scheduled-tasks scheduler

我正在尝试在任务计划程序上安排任务,除非我勾选“以最高权限运行”或“运行天气用户登录或未登录”,否则每件事情都能正常工作

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

使用Power Shell命令的脚本 - .Bat文件。

任何人都可以弄清楚出了什么问题吗?

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

@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

1 个答案:

答案 0 :(得分:2)

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

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

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

"以最高权限运行"不会向指定用户授予更高权限,但会在安装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

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