计划任务运行Powershell脚本

问题描述 投票:0回答:3

我正在尝试通过 powershell 创建计划任务,以运行另一个 powershell 脚本,该脚本将每天调用许多其他脚本。

直接/手动从 Powershell 运行这些脚本中的任何一个时,都没有问题 - 每个脚本都执行其功能,没有任何问题。

但是,尽管如此,当尝试运行该任务时,我遇到了退出代码

0x1
的砖墙。

我对此进行了研究并尝试了多种不同的论点:

  • 尝试使用“Powershell”作为程序运行,使用存储 powershell 的系统文件夹的文件路径,或者简单地作为 PowerShell 或 Powershell.exe。
  • 已尝试使用
    -ExecutionPolicy Bypass
    开关执行上述操作(在每种变体中)。
  • 已尝试使用
    -File "C:\Test\V2\Master.Script.ps1"
    进行上述操作,并将其与
    -ExecutionPolicy Bypass
    开关结合起来。
  • 尝试使用
    "-NonInteractive"
    开关。
  • 作为系统运行
  • 以最高特权奔跑
  • 无论用户是否登录都运行
  • 使用本地管理员域用户帐户进行测试(在实时环境中,只能访问本地管理员或系统)
windows powershell scheduled-tasks
3个回答
1
投票

我过去也遇到过这个问题。我发现有效的是使用

BAT File
来调用 ps1 文件。希望这对您的情况有所帮助。

BAT 文件会改变执行策略,然后运行 ps1 文件。 BAT 和 ps1 文件除了文件扩展名外需要命名相同

REG ADD "HKLM\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" /T REG_SZ /V ExecutionPolicy /D Unrestricted /F

Start PowerShell.exe -Command "& '%~dpn0.ps1'"

这是我用来创建新任务来运行附加 ps1 文件的一些代码。

$Task_Action = New-ScheduledTaskAction -Execute 'PowerShell.exe' -Argument '-File C:\File.ps1'
$Task_Principal = New-ScheduledTaskPrincipal -UserId SYSTEM -RunLevel Highest
$Task_Settings = New-ScheduledTaskSettingsSet -Hidden
$Task_Trigger = New-ScheduledTaskTrigger -AtStartup

Register-ScheduledTask `
    -TaskName "Your Task Name" `
    -Action $Task_Action `
    -Principal $Task_Principal `
    -Trigger $Task_Trigger `
    -Settings $Task_Settings `
    -Force

在最后一个脚本中,我使用

Set-ExecutionPolicy Restricted -Scope LocalMachine

设置了执行策略

0
投票

我使用@briantist在PowerShell脚本不会作为Windows计划任务执行中的答案解决了这个问题,但我想准确地隔离哪个开关正在解决问题。

它与

-ExecutionPolicy
-Noninteractive
-NoLogo
-NoProfile
或任何其他系统权限、运行脚本的用户帐户等无关。

只需在

-File
字段中的脚本路径前面添加
Task Scheduler > Actions > Arguments
即可。如果没有此开关,PowerShell 将启动并且任务历史记录显示
Action Completed
,但脚本未执行。


0
投票

上面未提及的其他两个可能的问题:

  1. 任务计划程序正在调用 cmd 来运行您的脚本,因此请确保在尝试/调试/故障排除时也从 cmd 调用 powershell。

  2. 网络驱动器

当用户未登录时,无法访问网络驱动器,因此我必须替换为全名(例如,我必须用

cd Y:
代替
cd \\server-somewhere.com
)。

如果您在脚本中将目录更改为网络驱动器,这可能就是问题所在。

通过日志记录轻松检查

dir
更改目录后的结果:

cd ...
dir | Out-File myLogFile.txt -Append;
© www.soinside.com 2019 - 2024. All rights reserved.