PowerShell Ortam Değişkenleri
PowerShell Çevre Değişkenleri, PowerShell Environment Variables
PowerShell Ortam Değişkenleri
PowerShell ortam değişkenleri, işletim sisteminin yolu, işletim sisteminiz tarafından kullanılan işlemci sayısı ve sistem geçici klasörlerinizin adresi gibi işletim sistemi bilgilerini içerir. Buradaki ilk soru, neden ortam değişkenlerine ihtiyacımız var? Bir script yazdığınızı varsayalım. Bu scriptin, eğer yerel bilgisayarlarınızda çalışırsa farklı bir işlem yapmasını ve bir sunucu bilgisayarı üzerinde çalışırsa, daha farklı bir işlem yapmasını istiyoruz. “Script nerede çalıştığını nasıl bilecektir?” sorusunun cevabı; ortam ve çevre değişkenlerinin yardımıyla görevleri buna göre ayırt edebilir ve gerçekleştirir şeklindedir. İşletim sistemimizde birkaç ortam değişkeni vardır. Örneğin işletim sistemimizde oturum açtığımızda bize ait dizinlerimiz (home) ayarlanır.
PowerShell de tanımlanmış olan ortam değişkenlerini görmek için aşağıdaki komut kullanılabilir:
Set-Location Env: Get-Item Env:
PowerShell Ortam Değişkenleri Nasıl Tanımlanır?
Aşağıda PowerShell ortam değişkeni tanımlamaya yönelik örnekler verilmiştir:
Örnek 1
Bir “stage“, birde “production” ortamı olmak üzere iki ayrı ortam oluşturmak istediğimizi varsayalım. Geliştirme yaparken kodlarımızın eğer ortam stage ise farklı, production ise farklı davranmasını istiyoruz. Bunun için aşağıdaki yapıyı kullanabiliriz. Görülebileceği üzere, “Get-ChildItem” komutu ile gerekli yapılandırmanızı görebilir ve ilgili aksiyonları gerçekleştirebilirsiniz.
Stage Ortamı:
PS Env:\> $env:ServerName = 'stage' Get-ChildItem Env:ServerName Name Value ---- ----- ServerName stage PS Env:\>
Production Ortamı:
PS Env:\> $env:ServerName = 'production' Get-ChildItem Env:ServerName Name Value ---- ----- ServerName production PS Env:\>
Örnek 2
Kendi ortam değişkenimizi tanımlayabiliriz ve ihtiyaca göre değerini alabiliriz. Aşağıdaki örnekte çok basit bir sözdizimi ve örneği görebilirsiniz. “BenimDegerli_ENV” değerini ayarlıyoruz ve “Get-ChildItem” komutuyla değerini alıyoruz.
Kod:
# $Env:<degisken-adi> += "<yeni-deger>" $Env:BenimDegerli_ENV += "Aktif Dizin" Get-ChildItem Env:BenimDegerli_ENV
Çıktı:
PowerShell Ortam Değişkenleri Listesi
İki tür ortam değişkeni vardır:
Sistem Tanımlı Ortam Değişkenleri:
Sistem tanımlı ortam değişkenleri sayesinde, işletim sisteminin hangi sürücüden başlayacağı, kullanıcıya özel dizinlerin nasıl ayarlanacağı ve diğer önemli yolların nasıl belirleneceği belirlenmiştir.
Bütün sistemlerde, uygulamalar için dosya yolları, işlemci mimarisi, windows yolu gibi bir çok ortam için ortam değişkenleri tutulur. Aşağıdaki komut kullanılabilir tüm ortamları görüntüler. Windows, Linux ve Apple işletim sistemleri gibi farklı mimaridaki sistemler için değerler farklıdır.
Komut:
Get-ChildItem Env:
Çıktı:
PS C:\Users\ahmet> Get-ChildItem Env: Name Value ---- ----- ALLUSERSPROFILE C:\ProgramData APPDATA C:\Users\ahmet\AppData\Roaming CommonProgramFiles C:\Program Files\Common Files CommonProgramFiles(x86) C:\Program Files (x86)\Common Files CommonProgramW6432 C:\Program Files\Common Files COMPUTERNAME AHMET ComSpec C:\Windows\system32\cmd.exe DriverData C:\Windows\System32\Drivers\DriverData FPS_BROWSER_APP_PROFILE_STRING Internet Explorer FPS_BROWSER_USER_PROFILE_ST... Default HOMEDRIVE C: HOMEPATH \Users\ahmet LOCALAPPDATA C:\Users\ahmet\AppData\Local LOGONSERVER \\AKTIFDIZIN NUMBER_OF_PROCESSORS 4 OneDrive C:\Users\ahmet\OneDrive OS Windows_NT Path C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\Windows... PATHEXT .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL PROCESSOR_ARCHITECTURE AMD64 PROCESSOR_IDENTIFIER Intel64 Family 6 Model 42 Stepping 7, GenuineIntel PROCESSOR_LEVEL 6 PROCESSOR_REVISION 2a07 ProgramData C:\ProgramData ProgramFiles C:\Program Files ProgramFiles(x86) C:\Program Files (x86) ProgramW6432 C:\Program Files PSModulePath C:\Users\ahmet\Documents\WindowsPowerShell\Modules;C:\Program Files\WindowsPowerShe... PUBLIC C:\Users\Public SESSIONNAME Console SystemDrive C: SystemRoot C:\Windows TEMP C:\Users\ahmet\AppData\Local\Temp TMP C:\Users\ahmet\AppData\Local\Temp USERDOMAIN AKTIFDIZIN USERDOMAIN_ROAMINGPROFILE AKTIFDIZIN USERNAME ahmet USERPROFILE C:\Users\ahmet windir C:\Windows PS C:\Users\ahmet>
Ayrıca, bu ayrıntıları “Sort-Object Name” komutu ile isime göre sıralayabiliriz.
Kod:
Get-ChildItem Env: | Sort-Object Name
Aşağıdaki şekilde bir herhangi bir özelliğin değerine ulaşılabilir.
PS C:\Users\ahmet> $env:WINDIR C:\Windows PS C:\Users\ahmet>
PS C:\Users\ahmet> $env:PATH C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\PuTTY\;C:\Users\ahmet\AppData\Local\Microsoft\WindowsApps; PS C:\Users\ahmet>
“Get-ChildItem $Env:Temp -Recurse” komutu ile tüm Temp dosyaları görülebilir.
Bir ortam değişkeni değerini görmek
Herhangi bir ortam değişkeni değerini görmek için aşağıdaki komutu kullanabilirsiniz. Sadece görmek istediğiniz ortam değişkeninin adını girmeniz yeterlidir.
PS C:\Users\ahmet> $env:ProgramData C:\ProgramData PS C:\Users\ahmet> $env:TMP C:\Users\ahmet\AppData\Local\Temp PS C:\Users\ahmet> $env:PUBLIC C:\Users\Public PS C:\Users\ahmet> $env:SystemRoot C:\Windows PS C:\Users\ahmet> $env:SystemDrive C: PS C:\Users\ahmet>
Özel Tanımlı Ortam Değişkenleri:
Diğer bir ortam değişkeni tipi ise özel tanımlı ortam değişkenleridir ve bunlar kendi kullanımlarımız için tanımlanmış değişkenlerdir. Örneğin bir uygulama geliştirdiysek ve bu uygulamanın farklı ortamlarda farklı şekillerde çalışmasını istiyorsak bu tip değişkenler kullanılabilir.
PS C:\Users\ahmet> $Env:FOO = "Merhaba Aktif Dizin Dünyası!" Get-ChildItem Env:FOO Name Value ---- ----- FOO Merhaba Aktif Dizin Dünyası! PS C:\Users\ahmet>
PowerShell Ortam Değişkenleri
Makalemizi okuduğunuz için teşekkür ederiz. Soru ve önerileriniz için aşağıdaki formu kullanarak bize ulaşabilirsiniz. “PowerShell Değişkenler” isimli makale de ilginizi çekebilir. Ortam değişkenleri ile ilgili Microsoft dökümanları da incelenebilir.