2016-03-29 28 views
1

1 parametresiyle birlikte bir Powershell komut dosyasını çalıştıracak zamanlanmış bir görev oluşturmaya çalışıyorum - bu, Server 2012'de Powershell v5 yüklüdür. Şimdiye kadar çalışmayı başarabildim, ama param değerimi tanımıyor - kodumda, aradığım şeyin değeri boş.Parametreleri geçirilen görevde powershell komut dosyasına geçirme

$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" 

Bu başarıyla çalıştırır, ancak -EmpID parametreyi tanımayacaktır: İşte zamanlanmış görev oluşturmak zorunda şeydir. Argümen değeri için -File yerine -Command da denedim ama aynı sonucu elde ediyorum. param etrafında

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

Tek tırnak için herşeyi ben param geçmesine alacak yapmak ya

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

Şimdiye kadar hiçbir şey görünmüyor. Neyi kaçırıyorum?

cevap

1

denemek ve pozisyonel ziyade adlı gibi parametreleri beyan edebilir:

[CmdletBinding()] 
Param (
    [Parameter(Position=0)] 
    [string]$Ticket 
) 

"-ExecutionPolicy ByPass -File C:\Scripts\Term.ps1 '$EmpID'" 

Sonra -ParamName bırakın ve konumunu kullanarak iletebiliriz.

+0

Bu benim için çalıştı, teşekkürler –

İlgili konular