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

  • Ludique

    Ludique

    21 NİSAN 2009
  • Orson Wang

    Orson Wang

    28 EKİM 2006
  • Music EuroDance 2

    Music EuroDa

    12 Mayıs 2011

İLGİLİ SORU / CEVAPLAR