PowerShell Yerleşik Değişkenleri
PowerShell, komut dosyalarında kullanılabilecek önceden tanımlanmış bir dizi değişken olan yerleşik değişkenlere sahiptir. Bu değişkenler mevcut ortam ayarları, sistem özellikleri ve komut dosyası yürütme ayrıntıları gibi önemli bilgilere erişim sağlar.
PowerShell'de otomasyon değişkenleri, ortak yerleşik değişkenler, özel değişkenler ve olay değişkenleri bulunur.
Bu makalede PowerShell'de bulunan çeşitli yerleşik değişken türlerini ve bunların komut dosyalarında kullanımını tartışacağız.
Ortak Yerleşik Değişken
PowerShell'de yaygın olarak kullanılan bazı yerleşik değişkenler şunları içerir:
$veya $PSItem - İşlem hattındaki, döngüdeki veya filtrelerdeki geçerli nesneyi temsil eder
Aşağıdaki komut dosyası, geçerli dizindeki her dosyanın adını yazdırmak için $_ kullanır.
Get-ChildItem | ForEach-Object { Write-Host $_.Name }$HOME - Kullanıcının ana dizin konumunu temsil eder
Aşağıdaki komut dosyası, çalışma dizinini kullanıcının ana dizini olarak değiştirmek için $HOME değişkenini kullanır
Set-Location $HOME$PWD - Geçerli çalışma dizinini temsil eder
Aşağıdaki komut dosyası, Get-ChildItem cmdlet'ini kullanarak geçerli çalışma dizinindeki dosyaların listesini almak için $PWD'yi kullanır.
Get-ChildItem $PWD$NULL - Boş değeri temsil eder.
Aşağıdaki komut dosyası boş değeri bir değişkene atar
$filePath = $NULLPowerShell Otomatik Değişkenleri
Otomatik değişkenler PowerShell tarafından oluşturulur ve yönetilir. Geçerli yürütme ortamı hakkındaki bilgileri depolarlar.
Aşağıda PowerShell'deki otomatik değişkenlerin listesi bulunmaktadır.
$Args - İşleve veya betiğe iletilen bağımsız değişkenleri içerir
Aşağıdaki komut dosyası, bir betiğe iletilen bağımsız değişkenleri yazdırmak için $Args öğesini kullanır:
param($arg1, $arg2)
Write-Host "Arguments: $arg1, $arg2"Yukarıdaki PowerShell betiğinde $arg1 ve $arg2 param ifadesi kullanılarak tanımlanır. Write-Host cmdlet'i bu iki bağımsız değişkenin değerlerini konsola yazdırmak için kullanılır. Komut dosyasını example-script.ps1 olarak kaydedin
Yukarıdaki betiği aşağıda verilen bağımsız değişkenlerle çalıştırın:
.\example-script.ps1 "shell" "admin"Yukarıdaki PowerShell betiğinin çıktısı:
Arguments: shell, admin$Error - Betiğin yürütülmesi sırasında ortaya çıkan bir dizi hatayı tutar
Aşağıdaki komut dosyası, geçerli PowerShell oturumunda oluşan hatayı görüntülemek için $Error otomatik değişkenini kullanır.
Get-ChildItem -Path 'D:\PS\FRVTemp\'
$Error[-1].Exception.Message
Yukarıdaki PowerShell betiğinde Get-ChildItem cmdlet'i, belirtilen dizinden var olmayan ve hata oluşturacak öğeleri almak için kullanılır.
Dizideki son hata nesnesine erişmek için $Error değişkeni, hata mesajını görüntülemek için .Exception.Message özelliği kullanılır.
$ExecutionHost - Geçerli yürütme bağlamına erişim sağlar
Aşağıdaki komut dosyası, oturum durumu nesne bilgilerini almak için bu $ExecutionHost'u kullanır.
$ExecutionContext.SessionState$Host - Geçerli ana bilgisayar uygulamasıyla ilgili bilgileri içerir
Aşağıdaki komut dosyası, PowerShell ana bilgisayarının geçerli sürümünü almak için $HOST otomatik değişkenini kullanır.
$HOST.VersionYukarıdaki PowerShell betiğinin çıktısı, PowerShell ana bilgisayar sürümünü döndürür:
PS D:\> $HOST.Version
Major Minor Build Revision
----- ----- ----- --------
5 1 18362 2212
PS D:\>$Input - İşlem hattı aracılığıyla bir işleve veya komut dosyasına yapılan giriş geçişlerini saklar
Aşağıdaki PowerShell betiği, ardışık düzenden geçen öğelerin sayısını saymak için $Input betiğini kullanır.
$Input | Measure-Object | Select-Object -ExpandProperty Count$MyInvokasyon - Mevcut komut dosyası veya komut çağrısıyla ilgili ayrıntıları sağlayın
Aşağıdaki komut dosyası, geçerli komut dosyasının adını almak için $MyInvation değişkenini kullanır.
$MyInvocation.MyCommand.Name$PROFILE - Geçerli kullanıcının profil komut dosyasının yolunu temsil eder.
Aşağıdaki komut dosyası, geçerli kullanıcının profil komut dosyasına erişmek için $PROFILE değişkenini kullanır.
notepad $PROFILEYukarıdaki PowerShell betiğinde, $PROFILE değişkeni geçerli kullanıcının profil betiğini alır ve betiği bir metin düzenleyicide açmak için Not Defteri kullanılır.
$PSBoundParameters - Bir komut dosyasına veya işleve iletilen parametrelerin sözlüğünü içerir
Aşağıdaki komut dosyası, işleve iletilen parametrelerin değerlerini yazdırmak için $PSBoundParameters'ı kullanır.
function Example-Function {
$PSBoundParameters
}
Example-Function -Param1 "Shell" -Param2 "Admin"
Yukarıdaki PowerShell betiği bir "Örnek İşlev" işlevi oluşturur. Komut dosyasını çalıştırın ve bir example-script.ps1 dosyası olarak kaydedin.
PowerShell konsolunu açın ve betiği çalıştırın. $PSBoundParameters değişkeni parametre değerlerini yazdıracaktır.
$PSCommonPath - Geçerli betiğin veya komutun yolunu saklar
Aşağıdaki komut dosyası, geçerli komut dosyasının yolunu bulmak için $PSCommandPath'i kullanır.
$PSCommandPath$PSHome - PowerShell'in kurulu olduğu dizini ifade eder
Aşağıdaki komut dosyası, PowerShell kurulum dizini yolunu almak ve pwsh.exe ile Join-Path cmdlet'ini kullanarak yolu birleştirmek için $PSHome otomatik değişkenini kullanır.
Join-Path $PSHome "pwsh.exe"$PSScriptRoot - Geçerli betiği içeren dizini temsil eder
Aşağıdaki komut dosyası, geçerli komut dosyasını içeren dizinin yolunu bulmak için $PSScriptRoot otomatik değişkenini kullanır.
$PSScriptRoot Harika İpucu: PowerShell'de dosyaya değişkenler nasıl yazılır?
PowerShell Özel Değişkenleri
PowerShell, özel sabit değerlere sahip özel değişkenler sağlar.
- $true - Boolean gerçek değerini temsil eder.
- $false - Boolean false değerini temsil eder.
- $null - Boş değeri temsil eder.
PowerShell Olay Değişkenleri
PowerShell, PowerShell olaylarıyla çalışırken kullanılan olay değişkenlerini sağlar.
- $Event - Geçerli olay nesnesini ifade eder.
- $EventArgs - Geçerli olayın olay bağımsız değişkenlerini temsil eder.
- $Sender - Geçerli olayı başlatan nesneyi ifade eder.
Çözüm
Umarım PowerShell yerleşik değişkenleri ve bunların bir komut dosyası ortamında nasıl kullanılacağı hakkındaki yukarıdaki makale size yardımcı olur.
PowerShell Active Directory komutları ve PowerShell temelleri hakkında daha fazla konuyu ShellGeek ana sayfasında bulabilirsiniz.