olarak gösteriyorum Bir PowerShell betiğini bir .exe dosyasına göndereceğim. Bazı isteğe bağlı komut paramiklerine sahip olmak ve geri kalanını doğrudan exe'ye aktarmak istiyorum.İsteğe bağlı bir parametreyi yalnızca adlandırılmış olarak değil, konumsal olarak değil,
param (
[Parameter(Mandatory=$False)] [string] $a = "DefaultA"
,[parameter(ValueFromRemainingArguments=$true)][string[]]$ExeParams # must be string[] - otherwise .exe invocation will quote
)
Write-Output ("a=" + ($a) + " ExeParams:") $ExeParams
Ben adlandırılmış param ile çalıştırırsanız, her şey harika:
C:\ > powershell /command \temp\a.ps1 -a A This-should-go-to-exeparams This-also
a=A ExeParams:
This-should-go-to-exeparams
This-also
benim param ihmal çalışırsanız, ilk adsız param kendisine atanan, ancak burada bir test senaryo :
C:\ > powershell /command \temp\a.ps1 This-should-go-to-exeparams This-also
a=This-should-go-to-exeparams ExeParams:
This-also
ben beklenebilir:
a=DefaultA ExeParams:
This-should-go-to-exeparams
This-also
Param için Position=0
eklemeyi denedim, ancak bu aynı sonucu veriyor.
Bunu başarmanın bir yolu var mı?
Belki farklı bir parametre şeması?
Yep var. Teşekkürler! – Jonathan
Bunu Powershell 2.0'da çalışmaya alamıyorum - beklenen bu mu? – bacar
Bunun Powershell 2.0'da çalıştığını sanmıyorum (blog yazısı bağlı olmadığını söylüyor ve [bu geçici çözüm] ile ilgilidir (http://social.technet.microsoft.com/Forums/windowsserver/en-US/ abbc587f-cd7e-4c8d-879f-355339d9d6b7/named-parameters-not-working-as beklenmiyor? forum = winserverpowershell # cf01c476-1831-4270-b462-ac7612240a56)) – ernie