如果您遇到的问题与执行策略有关,那么您还可以设置 PowerShell 特定调用的执行策略。这是我通过计划任务执行 PowerShell 时通常会做的事情:
powershell.exe -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File \\path\to\script.ps1
为什么?
-NoProfile
这可确保您不依赖用户的 PowerShell 配置文件中的任何内容,并避免执行该附加代码的开销。
-NoLogo
这大多无关紧要。如果您正在捕获脚本的输出,也许它会这样做。主要是它让我感觉更好。
-非交互式
如果脚本中的某些内容意外提示用户,确保您的任务不会无限期地等待。使用此开关,脚本将直接退出;至少你会有一个错误代码而不是一个挂起的脚本。
-ExecutionPolicy 绕过
您可以使用Unrestricted
此处或您喜欢的任何执行策略。这可能是您最需要的。
为什么我更喜欢以这种方式设置执行策略:
因为我不希望任务依赖于您将来可能有其他原因更改的全局非默认设置。如果其他一些进程依赖于不同的执行策略,那么它不会与您的任务相冲突。
另外,不必更改默认值总是很好的。更少记住/记录/测试。
奖金
0x1
有关导致计划任务的其他一些原因,请参阅 JohnLBevan 的答案。