SORU
14 ŞUBAT 2011, PAZARTESİ


Nasıl powershell'de bir fonksiyonu birden fazla parametre geçtim mi?

Eğer birden fazla dize parametresi kabul eden bir işlevi varsa, ilk parametre tüm verileri atanmış gibi görünüyor, ve geri kalan parametreler boş olarak geçirilir.

Hızlı bir test komut:

Function Test([string]$arg1, [string]$arg2)
{
    Write-Host "`$arg1 value: $arg1"
    Write-Host "`$arg2 value: $arg2"
}

Test("ABC", "DEF")

Çıkış oluşturulur

$arg1 value: ABC DEF
$arg2 value: 

Doğru çıktı olmalıdır:

$arg1 value: ABC
$arg2 value: DEF

Bu v1 ve birden fazla makine üzerinde v2 arasında olduğunu gösteriyor, belli ki, ben yanlış bir şey yapıyorum. Kimse tam olarak ne gösterebilir?

CEVAP
14 ŞUBAT 2011, PAZARTESİ


PowerShell işlevleri için çağrılar (tüm sürümler) parametreleri arasında boşluk ile ayrılmış, virgülle ayrılmış değil. Ayrıca, parantez içinde tamamen gereksiz ve eğer Set-StrictMode aktif ise powershell 2.0 ayrıştırma hatası (veya üstü) neden olur. Parenthesised argümanlar kullanılmaktadır .NET yöntem sadece.

function foo($a, $b, $c) {
   "a: $a; b: $b; c: $c"
}

ps> foo 1 2 3
a: 1; b: 2; c: 3

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • We've moved!

    We've moved!

    7 Ocak 2008
  • lane182videos

    lane182video

    6 EKİM 2011
  • Tom Megalis

    Tom Megalis

    18 NİSAN 2006

İLGİLİ SORU / CEVAPLAR