【问题标题】:Scheduled Task Running Powershell Script运行 Powershell 脚本的计划任务
【发布时间】:2019-05-02 19:46:51
【问题描述】:

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

当直接/手动从 Powershell 运行任何这些脚本时,没有任何问题 - 每个脚本都可以毫无问题地执行其功能。

然而,尽管如此,在尝试运行任务时,我遇到了退出代码 0x1 的砖墙。

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

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

【问题讨论】:

  • 从调试开始,如果它是关于你的脚本或一般调用 Powershell。创建一个简单的脚本来更新 c:\temp 中的文件。尝试将其作为计划任务运行。如果它运行,则主脚本中有一些内容。如果失败,则任务定义中有内容。

标签: windows powershell scheduled-tasks


【解决方案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 重新设置了执行策略

【讨论】:

    【解决方案2】:

    我使用@briantist 在PowerShell script won't execute as a Windows scheduled task 中的答案解决了这个问题,但我想准确地找出解决问题的开关。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-18
      • 2017-11-08
      • 2020-08-07
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      • 2015-07-27
      相关资源
      最近更新 更多