Joh*_*ohn 6 powershell ps1 windows-task-scheduler
我写了以下 .ps1 文件:-
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$request = [System.Net.WebRequest]::Create("https://localhost/")
$response = $request.GetResponse()
$response.Close()
Run Code Online (Sandbox Code Playgroud)
我在 windows server 2012 r2 任务调度程序中设置了一个任务,在 ps1 文件上方调用 te。现在我手动运行这个任务,但它一直显示“0x41301”,这意味着它仍在运行......虽然如果我直接运行PowerShell 窗口中的上述代码将在不到一秒的时间内结束?那么为什么使用任务 Schuler 调用这个 ps1 永远不会结束?
--编辑--这里是导出的XML:-
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2016-02-09T00:35:11.5514762</Date>
<Author>ad-services\user.service</Author>
</RegistrationInfo>
<Triggers>
<CalendarTrigger>
<Repetition>
<Interval>PT5M</Interval>
<Duration>PT30M</Duration>
<StopAtDurationEnd>false</StopAtDurationEnd>
</Repetition>
<StartBoundary>2016-02-09T19:30:01</StartBoundary>
<Enabled>true</Enabled>
<ScheduleByDay>
<DaysInterval>1</DaysInterval>
</ScheduleByDay>
</CalendarTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>S-1-5-20</UserId>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>P3D</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
<Command>C:\Users\user.service\Documents\AppPoolActivation.ps1</Command>
</Exec>
</Actions>
</Task>
Run Code Online (Sandbox Code Playgroud)
我相信这说明了问题:
<Actions Context="Author">
<Exec>
<Command>C:\Users\user.service\Documents\AppPoolActivation.ps1</Command>
</Exec>
</Actions>
Run Code Online (Sandbox Code Playgroud)
你不应该只是把一个 .PS1 脚本作为你想要运行的命令,它会导致它失败,或者做一些奇怪的事情。:)
而是在任务中,将要运行的“程序/脚本”更改为:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Run Code Online (Sandbox Code Playgroud)
通过任务的“参数”字段添加脚本,并包括执行策略更改(如果需要)。IE:
-ExecutionPolicy Bypass -file "C:\Users\user.service\Documents\AppPoolActivation.ps1"
Run Code Online (Sandbox Code Playgroud)
您可能还想更改“开始于”字段以匹配脚本所在的路径,即:C:\Users\user.service\Documents\
。
一条建议,不要将脚本存储在用户的配置文件文件夹中,因为它可能会导致访问问题。而是创建一个文件夹(文件夹外Users
)来保存您的脚本,并确保用于运行任务的用户帐户具有适当的访问权限。
归档时间: |
|
查看次数: |
34490 次 |
最近记录: |