【问题标题】:Passing Parameters to powershell script in scheduled task在计划任务中将参数传递给powershell脚本
【发布时间】:2016-03-29 23:11:11
【问题描述】:

我正在尝试创建一个计划任务,该任务将运行带有 1 个参数的 Powershell 脚本 - 这是在安装了 Powershell v5 的 Server 2012 上。到目前为止,我已经能够让任务运行,但它无法识别我的参数值 - 我正在调用的脚本中的值为 null。这是我必须创建的计划任务:

$TicketTime = "9:00pm"
$EmpID = "1234"
$Firstname = "Test"
$Lastname = "User"

$Action = New-ScheduledTaskAction -Execute "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -Argument "-ExecutionPolicy ByPass -File C:\Scripts\Term.ps1 -EmpID '$EmpID'"
$Trigger = New-ScheduledTaskTrigger -Once -At "03/29/2016 $TicketTime"
$Task = New-ScheduledTask -Action $Action -Trigger $Trigger -Settings (New-ScheduledTaskSettingsSet)
$Task | Register-ScheduledTask -TaskName "$Firstname $Lastname" -User "myuser" -Password "mypass"

这将成功执行,但无法识别 -EmpID 参数。我也尝试了 -Command 而不是 -File 作为参数值,但我得到了相同的结果。

-ExecutionPolicy ByPass -Command "& C:\Scripts\Term.ps1 -EmpID 1234"

参数周围的单引号似乎也没有任何作用

-ExecutionPolicy ByPass -Command "& C:\Scripts\Term.ps1 -EmpID '1234'"

到目前为止,我所做的一切都不会让参数通过。我错过了什么?

【问题讨论】:

    标签: windows powershell


    【解决方案1】:

    您能否尝试将您的参数声明为位置参数而不是命名参数:

    [CmdletBinding()]
    Param (
        [Parameter(Position=0)]
        [string]$Ticket
    )
    
    "-ExecutionPolicy ByPass -File C:\Scripts\Term.ps1 '$EmpID'"
    

    然后您可以删除 -ParamName 并将其传递给使用位置。

    【讨论】:

      猜你喜欢
      • 2010-11-08
      • 2021-05-02
      • 2017-11-19
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      • 2019-03-10
      • 2020-12-08
      相关资源
      最近更新 更多