Windows PowerShell betiklerinde değişken kapsamı kullanma

Tamamlandı

Sezgisel olarak, işlev tamamlandığında bir işlevde ayarladığınız adlı $computer değişkene betikte erişilebileceğini varsayarsınız. Ancak, böyle bir durum söz konusu değildir. Değişkenlerin belirli bir kapsamı vardır ve kapsamlar arasında etkileşim kurma yöntemleri sınırlıdır.

Aşağıdaki tabloda üç kapsam ve bunların değişken kullanımını nasıl etkilediği açıklanmaktadır.

Tablo 1: Kapsamlar

Scope Açıklama
Global Genel kapsam, Windows PowerShell istemi içindir. Windows PowerShell isteminde ayarlanan değişkenler, bu Windows PowerShell isteminde başlatılan tüm betiklerde gözden geçirilebilir. Windows PowerShell isteminde oluşturulan değişkenler, diğer Windows PowerShell istemlerinde veya Windows PowerShell Tümleşik Betik Ortamı (ISE) örneklerinde mevcut değildir.
Senaryo Betik kapsamı tek bir betik içindir. Bir betik içinde ayarlanan değişkenler, bu betik içindeki tüm işlevler tarafından gözden geçirilebilir. Global kapsamda zaten var olan bir değişkenin değerini betik kapsamında ayarlarsanız, betik kapsamında yeni bir değişken oluşturulur. Daha sonra, iki ayrı kapsamda aynı isme ait iki değişken vardır. Bu noktada, betikteki değişkenin değerini gözden geçirdiğinizde, betik kapsamındaki değişkenin değeri döndürülür.
İşlev İşlev kapsamı tek bir işlev içindir. İşlev içinde ayarlanan değişkenler diğer işlevlerle veya betikle paylaşılamaz. İşlev kapsamında genel veya betik kapsamında zaten var olan bir değişken değeri ayarlarsanız, işlev kapsamında yeni bir değişken oluşturulur. Ardından, iki ayrı kapsamda aynı isimde iki değişken bulunur.

Not

Karışıklığı önlemek için, farklı kapsamlarda aynı değişken adlarını kullanmaktan kaçınmak en iyi yöntemdir.

Daha üst düzey bir kapsamdaki bir değişkeni gözden geçirmenin yanı sıra, değişkeni değiştirirken özel olarak değişkenin kapsamına başvurarak da bu değişkeni değiştirebilirsiniz. Bir işlevden betik kapsamı değişkenini değiştirmek için aşağıdaki söz dizimini kullanın:

$script:var = "Modified from function"

Kapsamlar arasında değişkenleri değiştirmekten kaçınmak en iyi yöntemdir, çünkü bunu yapmak karışıklığa neden olabilir. Bunun yerine, betik kapsamı değişkenini işlevin çıktısına eşitleyin. İşlevdeki veriler bir değişkendeyse, betikte geri geçirmek için Return() kullanabilirsiniz.

Aşağıda, bir değişken değerini betik kapsamına geri geçirmek için işlevin sonunda Return() kullanma örneği verilmiştir:

Return($users) 

Not

İşlevde Return() kullanılması, belirtilen verileri döndürülen verilerin işlem hattına ekler, ancak işlem hattındaki mevcut verilerin yerini almaz. Senaryo geliştirmenin bir parçası olarak, bir işlev tarafından döndürülen verileri tam olarak doğrulamanız gerekir.