使用Powershell在特定时间运行脚本

时间:2018-11-26 08:05:39

标签: powershell task

我创建了一个脚本文件,并且希望该脚本在每天设置的时间运行

我已将以下代码用于此操作,但无法正常工作。

 $app = New-ScheduledTaskAction -Execute "C:\Users\XXX\Desktop\script.ps1";
 $time = New-ScheduledTaskTrigger -Daily -At 22:58pm
 Register-ScheduledTask TEST1 -Action $app -Trigger $time;

如何在每天的特定时间运行 script.ps1 ? 我在哪里弄错了? 我该如何解决我的问题?

注意:我的Powershell版本

PSVersion                      5.1.17134.407                                                                                                                                         
PSEdition                      Desktop                                                                                                                                               
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                                                                               
BuildVersion                   10.0.17134.407                                                                                                                                        
CLRVersion                     4.0.30319.42000                                                                                                                                       
WSManStackVersion              3.0                                                                                                                                                   
PSRemotingProtocolVersion      2.3                                                                                                                                                   
SerializationVersion           1.1.0.1       

1 个答案:

答案 0 :(得分:1)

可能存在多个问题。对于脚本本身,您没有提供源。权限也可能有问题(您是否有权创建任务?您是否有权从目标位置运行脚本?)

无论如何,从您发布的内容来看,问题是您试图直接运行脚本,但应该先--execute powershell.exe,然后再运行脚本。

这是安排Powershell脚本的一种方法(请注意,它以最高特权运行):

$TaskName = 'MyScript'
$User= "domain\user"
$ScriptPath = "C:\Users\XXX\Desktop\script.ps1"

$Trigger= New-ScheduledTaskTrigger -At 22:58pm -Daily 
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-executionpolicy bypass -noprofile -file $ScriptPath" 
Register-ScheduledTask -TaskName $TaskName -Trigger $Trigger -User $User -Action $Action -RunLevel Highest -Force