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

  • David Tedeyev

    David Tedeye

    20 AĞUSTOS 2011
  • Machinima

    Machinima

    17 Ocak 2006
  • Theodore Leaf

    Theodore Lea

    29 AĞUSTOS 2006

İLGİLİ SORU / CEVAPLAR