Rya*_*old 5 windows powershell
我正在尝试创建一个计划任务,该任务将运行带有 1 个参数的 Powershell 脚本 - 这是在安装了 Powershell v5 的 Server 2012 上。到目前为止,我已经能够运行该任务,但它无法识别我的参数值 - 在我调用的脚本中该值为空。这是我必须创建的计划任务:
$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"
Run Code Online (Sandbox Code Playgroud)
这将成功执行,但无法识别 -EmpID 参数。我还尝试了 -Command 而不是 -File 作为参数值,但得到了相同的结果。
-ExecutionPolicy ByPass -Command "& C:\Scripts\Term.ps1 -EmpID 1234"
Run Code Online (Sandbox Code Playgroud)
参数周围的单引号似乎也没有做任何事情
-ExecutionPolicy ByPass -Command "& C:\Scripts\Term.ps1 -EmpID '1234'"
Run Code Online (Sandbox Code Playgroud)
到目前为止,我所做的任何事情都无法让参数通过。我缺少什么?
您可以尝试将参数声明为位置参数而不是命名参数:
[CmdletBinding()]
Param (
[Parameter(Position=0)]
[string]$Ticket
)
"-ExecutionPolicy ByPass -File C:\Scripts\Term.ps1 '$EmpID'"
Run Code Online (Sandbox Code Playgroud)
然后您可以删除 -ParamName 并将其传递到 using 位置。
| 归档时间: |
|
| 查看次数: |
7656 次 |
| 最近记录: |