Ben bu temel adımları argümanları kabul edecek bir powershell (2.0) komut oluşturmak çalışıyorum:Powershell olmayan pozisyonel, isteğe bağlı parametreler
seçenekleri opsiyonel parametrelerin herhangi sayıda.\{script name} [options] PATH
- boyunca düşünmek Verbose için '-v' satırları. PATH argümanı, son olarak hangi argümanın geçtiyse gerçekleşir ve zorunludur. Senaryoyu hiçbir seçenek ve sadece bir argüman olmadan arayabilir ve bu argümanın Yol olduğu varsayılır. Sadece isteğe bağlı parametreleri içeren, ancak aynı zamanda konumsal olmayan bir parametre listesi oluşturmada sorun yaşıyorum. şöyle
#param test script
Param(
$firstArg,
$secondArg,
[switch]$thirdArg,
[Parameter(ValueFromRemainingArguments = $true)]
$remainingArgs)
write-host "first arg is $firstArg"
write-host "second arg is $secondArg"
write-host "third arg is $thirdArg"
write-host "remaining: $remainingArgs"
seslendi::
.\param-test.ps1 firstValue secondValue
komut çıkışları:
first arg is firstValue
second arg is secondValue
third arg is False
remaining:
denemekten duyuyorum davranış
Bu hızlı komut ben yaşıyorum sorunu gösterir Oluşturulacak, her iki argümanın da İsteğe bağlı params ve reverseArgs değişkeninde biter.
yardımsever istenilen davranışı elde etmek için bir yol sağladı, ama orada en az bir zorunlu parametredir ve bu geliyorsa eğer sadece iş gibi görünüyor diğer argümanlardan öncesi tüm. I firstArg zorunlu hale ve 0 olan bir pozisyon belirtilerek bu davranışı göstermek:
.\param-test.ps1 firstValue secondValue
çıkış aşağıdaki gibidir: önceki ile aynı girişi ile
#param test script
Param(
[Parameter(Mandatory=$true, Position = 0)]
$firstArg,
$secondArg,
[switch]$thirdArg,
[Parameter(ValueFromRemainingArguments = $true)]
$remainingArgs)
write-host "first arg is $firstArg"
write-host "second arg is $secondArg"
write-host "third arg is $thirdArg"
write-host "remaining: $remainingArgs"
Run
first arg is firstValue
second arg is
third arg is False
remaining: secondValue
İlk, zorunlu argüman atanır ve kalan her şey soluk düşer h.
soru
şudur: Ben bir params listesi params şekilde tüm ayarlayabilirsiniz nasıl isteğe bağlıdır ve bunların hiçbiri pozisyonel nedir?
. _last_ argümanı olarak Position = 0 ile zorunlu bir argüman kullanabileceğimi bana göstermedi. – Fopedush
teşekkürler latkin, bunun üzerinde bir saat bile yakmıştım. Başka bir sorum vardı (size kredi ile cevap verdim): http://stackoverflow.com/questions/18861701/how-do-i-force-declared-parameters-to-require-explicit-naming – ekkis