Ortam Değişkenleri Hakkında
KıSA AÇıKLAMA
PowerShell'de Windows ortam değişkenlerine erişmeyi açıklar.
UZUN AÇıKLAMA
Ortam değişkenleri, işletim sistemi ortamı hakkındaki bilgileri depolar. Bu bilgiler, işletim sistemi yolu, işletim sistemi tarafından kullanılan işlemci sayısı ve geçici klasörlerin konumu gibi ayrıntıları içerir.
Ortam değişkenleri, işletim sistemi ve diğer programlar tarafından kullanılan verileri depolar. Örneğin, WINDIR
ortam değişkeni Windows yükleme dizininin konumunu içerir. Programlar, Windows işletim sistemi dosyalarının nerede bulunduğunu belirlemek için bu değişkenin değerini sorgulayabilir.
PowerShell, desteklenen işletim sistemi platformlarından herhangi birinde ortam değişkenlerine erişebilir ve bu değişkenleri yönetebilir. PowerShell ortam sağlayıcısı, ortam değişkenlerini görüntülemeyi ve değiştirmeyi kolaylaştırarak bu işlemi basitleştirir.
Ortam değişkenleri, PowerShell'deki diğer değişken türlerinden farklı olarak yerel arka plan işleri ve modül üyelerinin çalıştığı oturumlar gibi alt işlemler tarafından devralınır. Bu, ortam değişkenlerini hem üst hem de alt işlemlerde gerekli olan değerleri depolamak için uygun hale getirir.
Ortam değişkenlerini kullanma ve değiştirme
Windows'da ortam değişkenleri üç kapsamda tanımlanabilir:
- Makine (veya Sistem) kapsamı
- Kullanıcı kapsamı
- İşlem kapsamı
İşlem kapsamı, geçerli işlemde veya PowerShell oturumunda kullanılabilen ortam değişkenlerini içerir. Bu değişken listesi üst işlemden devralınır ve Makine ve Kullanıcı kapsamlarındaki değişkenlerden oluşturulur. Unix tabanlı platformlar yalnızca İşlem kapsamına sahiptir.
Ortam sağlayıcısıyla bir değişken söz dizimi kullanarak cmdlet kullanmadan ortam değişkenlerinin değerlerini görüntüleyebilir ve değiştirebilirsiniz. Ortam değişkeninin değerini görüntülemek için aşağıdaki söz dizimini kullanın:
$Env:<variable-name>
Örneğin, ortam değişkeninin WINDIR
değerini görüntülemek için PowerShell komut istemine aşağıdaki komutu yazın:
$Env:windir
Bu söz diziminde dolar işareti ($
) bir değişkeni, sürücü adı (Env:
) ise bir ortam değişkenini ve ardından değişken adını (windir
) gösterir.
PowerShell'de ortam değişkenlerini değiştirdiğinizde, değişiklik yalnızca geçerli oturumu etkiler. Bu davranış, Windows Komut Kabuğu'ndaki komutun Set
ve UNIX tabanlı ortamlardaki komutun davranışına Setenv
benzer. Machine veya User kapsamlarındaki değerleri değiştirmek için System.Environment sınıfının yöntemlerini kullanmanız gerekir.
Makine kapsamlı değişkenlerde değişiklik yapmak için, ayrıca izinlere sahip olmalıdır. Yeterli izin olmadan bir değeri değiştirmeye çalışırsanız, komut başarısız olur ve PowerShell bir hata görüntüler.
Aşağıdaki söz dizimini kullanarak bir cmdlet kullanmadan değişkenlerin değerlerini değiştirebilirsiniz:
$Env:<variable-name> = "<new-value>"
Örneğin, ortam değişkeninin Path
değerine eklemek ;c:\temp
için aşağıdaki söz dizimini kullanın:
$Env:Path += ";c:\temp"
Linux veya MacOS'ta, komuttaki iki nokta üst üste (:
), yeni yolu listede kendisinden önceki yoldan ayırır.
$Env:PATH += ":/usr/local/temp"
Ortam değişkenlerinin değerlerini değiştirmek için , Remove-Item
ve Copy-Item
gibi Set-Item
Item cmdlet'lerini de kullanabilirsiniz. Örneğin, ortam değişkeninin Set-Item
değerine eklemek ;c:\temp
için cmdlet'ini Path
kullanmak için aşağıdaki söz dizimini kullanın:
Set-Item -Path Env:Path -Value ($Env:Path + ";C:\Temp")
Bu komutta değer parantez içine alınıp birim olarak yorumlanır.
Tercihleri depolayan ortam değişkenleri
PowerShell özellikleri, kullanıcı tercihlerini depolamak için ortam değişkenlerini kullanabilir. Bu değişkenler tercih değişkenleri gibi çalışır, ancak oluşturuldukları oturumların alt oturumları tarafından devralınır. Tercih değişkenleri hakkında daha fazla bilgi için bkz. about_preference_variables.
Tercihleri depolayan ortam değişkenleri şunlardır:
PSExecutionPolicyPreference
Geçerli oturum için ayarlanan yürütme ilkesini depolar. Bu ortam değişkeni yalnızca tek bir oturum için yürütme ilkesi ayarladığınızda bulunur. Bunu iki farklı yolla yapabilirsiniz.
Oturum için yürütme ilkesini ayarlamak üzere ExecutionPolicy parametresini kullanarak komut satırından bir oturum başlatın.
cmdlet'ini
Set-ExecutionPolicy
kullanın. Scope parametresini "Process" değeriyle kullanın.Daha fazla bilgi için bkz. about_Execution_Policies.
PSModuleAnalysisCachePath
PowerShell, modüller ve cmdlet'leri hakkındaki verileri önbelleğe almak için kullanılan dosya üzerinde denetim sağlar. Önbellek, komut aranırken başlangıçta okunur ve bir modül içeri aktarıldıktan bir süre sonra arka plan iş parçacığına yazılır.
Önbelleğin varsayılan konumu:
- Windows PowerShell 5.1:
$env:LOCALAPPDATA\Microsoft\Windows\PowerShell
- PowerShell 6.0 ve üzeri:
$env:LOCALAPPDATA\Microsoft\PowerShell
- Windows dışı varsayılan:
~/.cache/powershell
Önbelleğin varsayılan dosya adı şeklindedir
ModuleAnalysisCache
. PowerShell'in birden çok örneği yüklü olduğunda dosya adı, yükleme başına benzersiz bir dosya adı olması için onaltılık bir sonek içerir.Not
Komut bulma düzgün çalışmıyorsa, örneğin Intellisense var olmayan komutları gösteriyorsa, önbellek dosyasını silebilirsiniz. Önbellek, PowerShell'i bir sonraki başlatışınızda yeniden oluşturulur.
Önbelleğin varsayılan konumunu değiştirmek için PowerShell'i başlatmadan önce ortam değişkenini ayarlayın. Bu ortam değişkenine yapılan değişiklikler yalnızca alt işlemleri etkiler. Değerin, PowerShell'in dosya oluşturma ve yazma iznine sahip olduğu bir tam yolu (dosya adı dahil) adlandırması gerekir.
Dosya önbelleğini devre dışı bırakmak için bu değeri geçersiz bir konuma ayarlayın, örneğin:
# `NUL` here is a special device on Windows that cannot be written to, # on non-Windows you would use `/dev/null` $env:PSModuleAnalysisCachePath = 'NUL'
Bu, NUL cihazının yolunu ayarlar. PowerShell yola yazamıyor, ancak hata döndürülmüyor. İzleme kullanarak bildirilen hataları görebilirsiniz:
Trace-Command -PSHost -Name Modules -Expression { Import-Module Microsoft.PowerShell.Management -Force }
- Windows PowerShell 5.1:
PSDisableModuleAnalysisCacheCleanup
Modül çözümleme önbelleğini yazarken, PowerShell gereksiz büyük bir önbellekten kaçınmak için artık mevcut olmayan modülleri denetler. Bazen bu denetimler istenmez, bu durumda bu ortam değişkeni değerini
1
olarak ayarlayarak bunları kapatabilirsiniz.Bu ortam değişkeninin ayarlanması geçerli işlemde hemen geçerli olur.
PSModulePath
Ortam
$env:PSModulePath
değişkeni, modülleri ve kaynakları bulmak için aranan klasör konumlarının listesini içerir.Varsayılan olarak, etkin konumlara atanmış
$env:PSModulePath
olan konumlar şunlardır:Sistem genelindeki konumlar: Bu klasörler PowerShell ile birlikte gelen modülleri içerir. Modüller konumunda depolanıyor
$PSHOME\Modules
. Ayrıca, Bu, Windows yönetim modüllerinin yüklendiği konumdur.Kullanıcı tarafından yüklenen modüller: Bunlar, kullanıcı tarafından yüklenen modüllerdir.
Install-Module
, modülün geçerli kullanıcı için mi yoksa tüm kullanıcılar için mi yükleneceğini belirtmenize olanak tanıyan bir Scope parametresine sahiptir. Daha fazla bilgi için bkz . Install-Module.- Windows'da, kullanıcıya özgü CurrentUser kapsamının
$HOME\Documents\PowerShell\Modules
konumu klasördür. AllUsers kapsamının konumu şeklindedir$env:ProgramFiles\PowerShell\Modules
. - Windows olmayan sistemlerde, kullanıcıya özgü CurrentUser kapsamının konumu klasördür
$HOME/.local/share/powershell/Modules
. AllUsers kapsamının konumu şeklindedir/usr/local/share/powershell/Modules
.
- Windows'da, kullanıcıya özgü CurrentUser kapsamının
Ayrıca, Program Files dizini gibi diğer dizinlere modül yükleyen kurulum programları, konumlarını değerine
$env:PSModulePath
ekleyebilir.Daha fazla bilgi için bkz. about_PSModulePath.
Ortam değişkenlerini yönetme
PowerShell, ortam değişkenlerini yönetmek için birkaç farklı yöntem sağlar.
- Ortam sağlayıcısı sürücüsü
- Öğe cmdlet'leri
- .NET System.Environment sınıfı
- Windows'ta, Sistem Denetim Masası
Ortam sağlayıcısını kullanma
Her ortam değişkeni System.Collections.DictionaryEntry sınıfının bir örneğiyle temsil edilir. Her DictionaryEntry nesnesinde ortam değişkeninin adı sözlük anahtarıdır. değişkeninin değeri sözlük değeridir.
PowerShell'de ortam değişkenini temsil eden nesnenin özelliklerini ve yöntemlerini görüntülemek için cmdlet'ini Get-Member
kullanın. Örneğin, sürücüdeki tüm nesnelerin Env:
yöntemlerini ve özelliklerini görüntülemek için şunu yazın:
Get-Item -Path Env:* | Get-Member
PowerShell Ortam sağlayıcısı, bir PowerShell sürücüsündeki (sürücü) ortam değişkenlerine Env:
erişmenizi sağlar. Bu sürücü bir dosya sistemi sürücüsüne çok benzer. Sürücüye gitmek için Env:
şunu yazın:
Set-Location Env:
Ortam değişkeninin değerlerini almak veya ayarlamak için content cmdlet'lerini kullanın.
PS Env:\> Set-Content -Path Test -Value 'Test value'
PS Env:\> Get-Content -Path Test
Test value
Sürücüdeki Env:
ortam değişkenlerini başka bir PowerShell sürücüsünden görüntüleyebilir ve ortam değişkenlerini görüntülemek ve değiştirmek için sürücüye gidebilirsiniz Env:
.
Öğe cmdlet'lerini kullanma
Bir ortam değişkenine başvurarak sürücü adını ve ardından değişkenin adını yazın Env:
. Örneğin, ortam değişkeninin COMPUTERNAME
değerini görüntülemek için şunu yazın:
Get-ChildItem Env:Computername
Tüm ortam değişkenlerinin değerlerini görüntülemek için şunu yazın:
Get-ChildItem Env:
Ortam değişkenleri alt öğelere sahip olmadığından ve Get-ChildItem
çıkışı Get-Item
aynıdır.
Varsayılan olarak, PowerShell ortam değişkenlerini aldığı sırayla görüntüler. Ortam değişkenleri listesini değişken adına göre sıralamak için komutun çıkışını Get-ChildItem
cmdlet'ine yöneltin Sort-Object
. Örneğin, herhangi bir PowerShell sürücüsünden şunu yazın:
Get-ChildItem Env: | Sort Name
Ayrıca, cmdlet'ini Env:
kullanarak sürücüye Set-Location
de gidebilirsiniz:
Set-Location Env:
Sürücüye Env:
girdiğinizde, sürücü adını yoldan atlayabilirsiniz Env:
. Örneğin, tüm ortam değişkenlerini görüntülemek için şunu yazın:
PS Env:\> Get-ChildItem
Değişkenin değerini COMPUTERNAME
sürücünün içinden Env:
görüntülemek için şunu yazın:
PS Env:\> Get-ChildItem ComputerName
Ortam değişkenlerindeki değişiklikleri kaydetme
Windows'da bir ortam değişkeninde kalıcı bir değişiklik yapmak için Sistem Denetim Masası kullanın. Gelişmiş Sistem Ayarları'nı seçin. Gelişmiş sekmesinde Ortam Değişkeni...'ye tıklayın. Mevcut ortam değişkenlerini Kullanıcı ve Sistem (Makine) kapsamlarına ekleyebilir veya düzenleyebilirsiniz. Windows bu değerleri Kayıt Defteri'ne yazarak oturumlarda ve sistem yeniden başlatmalarında kalıcı olmasını sağlar.
Alternatif olarak, PowerShell profilinize ortam değişkenleri ekleyebilir veya değiştirebilirsiniz. Bu yöntem desteklenen herhangi bir platformda PowerShell'in herhangi bir sürümü için çalışır.
System.Environment yöntemlerini kullanma
System.Environment sınıfı, değişkenin kapsamını belirtmenize olanak sağlayan GetEnvironmentVariable ve SetEnvironmentVariable yöntemleri sağlar.
Aşağıdaki örnek, makine ayarını PSModulePath
almak için GetEnvironmentVariable yöntemini ve değerin yolunu eklemek C:\Program Files\Fabrikam\Modules
için SetEnvironmentVariable yöntemini kullanır.
$path = [Environment]::GetEnvironmentVariable('PSModulePath', 'Machine')
$newpath = $path + ';C:\Program Files\Fabrikam\Modules'
[Environment]::SetEnvironmentVariable("PSModulePath", $newpath, 'Machine')
System.Environment sınıfının yöntemleri hakkında daha fazla bilgi için bkz. Ortam Yöntemleri.