首页 文章

如何使用Windows任务计划程序自动执行PowerShell脚本?

提问于
浏览
52

我有一个发送电子邮件的PowerShell脚本 . 我想每1分钟自动执行一次该脚本 . 我怎么能用任务调度程序呢?

目前我已经创建了一个任务并提供了我的脚本路径 . 但该调度程序打开我的脚本,而不是执行 .

6 回答

  • 82

    在我的情况下,我的脚本有参数,所以我设置:

    参数: -Command "& C:\scripts\myscript.ps1 myParam1 myParam2"

  • 11

    您可以使用Unblock-File cmdlet取消阻止此特定脚本的执行 . 这可以防止您进行任何由于安全问题而可能不需要的永久性策略更改 .

    Unblock-File path_to_your_script
    

    资料来源:Unblock-File

  • 6

    创建计划任务并将操作设置为:

    程序/脚本:Powershell.exe

    参数:-File“C:\ Users \ MyUser \ Documents \ ThisisMyFile.ps1”

  • 3

    经过几个小时的互联网测试和研究,我终于找到了如何使用任务调度程序启动我的PowerShell脚本,感谢视频Scheduling a PowerShell Script using Windows Task Scheduler by Jack Fruh @sharepointjack .

    程序/脚本 - >通过powershell.exe放置完整路径

    C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe
    

    添加参数 - >脚本的完整路径和脚本,没有任何“” .

    从(可选) - >脚本所在的目录开始,没有任何“” .

  • 1

    以下是使用PowerShell 3.0或4.0 for -RepeatIndefinitely 及以上的示例:

    # Trigger
    $middayTrigger = New-JobTrigger -Daily -At "12:40 AM"
    $midNightTrigger = New-JobTrigger -Daily -At "12:00 PM"
    $atStartupeveryFiveMinutesTrigger = New-JobTrigger -once -At $(get-date) -RepetitionInterval $([timespan]::FromMinutes("1")) -RepeatIndefinitely
    
    # Options
    $option1 = New-ScheduledJobOption –StartIfIdle
    
    $scriptPath1 = 'C:\Path and file name 1.PS1'
    $scriptPath2 = "C:\Path and file name 2.PS1"
    
    Register-ScheduledJob -Name ResetProdCache -FilePath $scriptPath1 -Trigger  $middayTrigger,$midNightTrigger -ScheduledJobOption $option1
    Register-ScheduledJob -Name TestProdPing -FilePath $scriptPath2 -Trigger $atStartupeveryFiveMinutesTrigger
    
  • 0

    您应该在任务计划程序中使用脚本启动PowerShell,而不是仅在任务计划程序中使用脚本路径 .

    C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -NonInteractive -File "C:\Path\To\Your\PS1File.ps1"
    

    有关这些开关的说明,请参见 powershell /? .

    如果您仍然遇到问题,请阅读this question .

相关问题