about_Environment_Variables

Kısa açıklama

PowerShell'de ortam değişkenlerine nasıl erişileceğini ve yönetileceğini açıklar.

Ortam değişkenleri, işletim sistemi ve diğer programlar tarafından kullanılan verileri depolar. PowerShell aşağıdaki ortam değişkenlerini oluşturur:

  • POWERSHELL_TELEMETRY_OPTOUT
  • POWERSHELL_DISTRIBUTION_CHANNEL
  • POWERSHELL_UPDATECHECK
  • PSExecutionPolicyPreference
  • PSModulePath
  • PSModuleAnalysisCachePath
  • PSDisableModuleAnalysisCacheCleanup

Bu değişkenlerin tam açıklamaları için bu makalenin PowerShell ortam değişkenlerine bakın.

Uzun açıklama

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ı, geçerli konsolda ortam değişkenlerini almanıza, eklemenize, değiştirmenize, temizlemenize ve silmenize olanak tanır.

Not

Windows'un aksine, macOS ve Linux'ta ortam değişkeni adları büyük/küçük harfe duyarlıdır. Örneğin Ve$env:PATH, $env:Path Windows dışı platformlarda farklı ortam değişkenleridir.

Ortam değişkenleri, PowerShell'deki diğer değişken türlerinden farklı olarak her zaman dize olarak depolanır. Ayrıca diğer değişkenlerin aksine, bunlar yerel arka plan işleri ve modül üyelerinin çalıştırıldığı 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.

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.

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 izniniz de 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.

PowerShell, ortam değişkenlerini kullanmak ve yönetmek için birkaç farklı yöntem sağlar.

  • Değişken söz dizimi
  • Ortam sağlayıcısı ve Öğe cmdlet'leri
  • .NET System.Environment sınıfı

Değişken söz dizimini kullanma

Ortam değişkenlerinin değerlerini aşağıdaki söz dizimiyle görüntüleyebilir ve değiştirebilirsiniz:

$Env:<variable-name>

Örneğin, ortam değişkeninin WINDIR değerini görüntülemek için:

$Env:windir
C:\Windows

Bu söz diziminde dolar işareti ($) bir değişkeni, sürücü adı (Env:) ise ortam değişkenini ve ardından değişken adını (windir) gösterir.

Ortam değişkenlerinin değerini aşağıdaki söz dizimiyle oluşturabilir ve güncelleştirebilirsiniz:

$Env:<variable-name> = "<new-value>"

Örneğin, ortam değişkenini Foo oluşturmak için:

$Env:Foo = 'An example'

Ortam değişkenleri her zaman dize olduğundan, bunları dize içeren diğer değişkenler gibi kullanabilirsiniz. Örneğin:

"The 'Foo' environment variable is set to: $Env:Foo"
$Env:Foo += '!'
$Env:Foo
The 'Foo' environment variable is set to: An example

An example!

PowerShell'de ortam değişkeni boş bir dizeye ayarlanamaz. Ortam değişkenini olarak $null veya boş bir dize olarak ayarlamak, bu değişkeni geçerli oturumdan kaldırır. Örneğin:

$Env:Foo = ''
$Env:Foo | Get-Member -MemberType Properties
Get-Member : You must specify an object for the Get-Member cmdlet.
At line:1 char:12
+ $env:foo | Get-Member
+            ~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Get-Member], InvalidOperationException
    + FullyQualifiedErrorId : NoObjectInGetMember,Microsoft.PowerShell.Commands.GetMemberCommand

Get-Member ortam değişkeni kaldırıldığı için bir hata döndürdü. Boş bir dizede kullandığınızda hata döndürmediğini görebilirsiniz:

'' | Get-Member -MemberType Properties
   TypeName: System.String

Name   MemberType Definition
----   ---------- ----------
Length Property   int Length {get;}

PowerShell'deki değişkenler hakkında daha fazla bilgi için bkz . about_Variables.

Ortam sağlayıcısını ve Öğe cmdlet'lerini kullanma

PowerShell'in Ortam sağlayıcısı, ortam değişkenleriyle dosya sistemi sürücüsüne benzeyen bir biçimde etkileşim kurmanızı sağlayan bir arabirim sağlar. PowerShell'de ortam değişkenlerini ve değerlerini almanıza, eklemenize, değiştirmenize, temizlemenize ve silmenize olanak tanır.

Örneğin, değerine Barsahip ortam değişkeni oluşturmak Foo için:

New-Item -Path Env:\Foo -Value 'Bar'
Name                           Value
----                           -----
Foo                            Bar

Ortam değişkenini ile Copy-Itemde kopyalayabilir, ile Set-Itembir ortam değişkeninin değerini ayarlayabilir, ortam değişkenlerini ile Get-Itemlisteleyebilir ve ile Remove-Itemortam değişkenini silebilirsiniz.

Copy-Item -Path Env:\Foo -Destination Env:\Foo2 -PassThru
Set-Item -Path Env:\Foo2 -Value 'BAR'
Get-Item -Path Env:\Foo*
Remove-Item -Path Env:\Foo* -Verbose
Name                           Value
----                           -----
Foo2                           Bar

Name                           Value
----                           -----
Foo2                           BAR
Foo                            Bar

VERBOSE: Performing the operation "Remove Item" on target "Item: Foo2".
VERBOSE: Performing the operation "Remove Item" on target "Item: Foo".

Ortam değişkenlerinin Get-ChildItem tam listesini görmek için cmdlet'ini kullanın:

Get-ChildItem Env:

Ortam değişkenlerini yönetmek için Ortam sağlayıcısını kullanma hakkında daha fazla bilgi için bkz. about_Environment_Provider.

System.Environment yöntemlerini kullanma

System.Environment sınıfı, ortam değişkenlerini GetEnvironmentVariable() almak ve değiştirmek için ve SetEnvironmentVariable() yöntemlerini sağlar.

Aşağıdaki örnek, Foodeğerine Bar sahip yeni bir ortam değişkeni oluşturur ve değerini döndürür.

[Environment]::SetEnvironmentVariable('Foo','Bar')
[Environment]::GetEnvironmentVariable('Foo')
Bar

Değişkenin SetEnvironmentVariable() değeri için boş bir dize belirterek yöntemiyle bir ortam değişkenini kaldırabilirsiniz. Örneğin, ortam değişkenini Foo kaldırmak için:

[Environment]::SetEnvironmentVariable('Foo','')
[Environment]::GetEnvironmentVariable('Foo')

System.Environment sınıfının yöntemleri hakkında daha fazla bilgi için bkz. Ortam Yöntemleri.

Windows'da kalıcı ortam değişkenleri oluşturma

Windows'da, ortam değişkeninde kalıcı bir değişiklik yapmak için üç yöntem vardır:

  • Bunları profilinizde ayarlama
  • SetEnvironmentVariable() yöntemini kullanma
  • Sistem Denetim Masası kullanma

Profilinizde ortam değişkenlerini ayarlama

PowerShell profilinize eklediğiniz veya değiştirdiğiniz ortam değişkenleri, profilinizi yükleyen tüm oturumlarda kullanılabilir. Bu yöntem desteklenen herhangi bir platformda PowerShell'in herhangi bir sürümü için çalışır.

Örneğin, ortam değişkenini CompanyUri oluşturmak ve ortam değişkenini Path klasörü içerecek C:\Tools şekilde güncelleştirmek için PowerShell profilinize aşağıdaki satırları ekleyin:

$Env:CompanyUri = 'https://internal.contoso.com'
$Env:Path += ';C:\Tools'

Not

Linux veya macOS'ta, yeni bir yolu listeden önceki yoldan ayırmak için noktalı virgül (;) yerine iki nokta üst üste (:) kullanılır.

Otomatik değişkenle $PROFILE PowerShell profilinizin yolunu alabilirsiniz. Profiller hakkında daha fazla bilgi için bkz . about_Profiles.

SetEnvironmentVariable() ile ortam değişkenlerini ayarlama

Windows'da, bu kapsamda ortam değişkenini SetEnvironmentVariable() ayarlamak için üçüncü parametre olarak yöntemi için bir kapsam belirtebilirsiniz. Hem makine hem de kullanıcı kapsamları geçerli işlemin dışında kalır ve yeni veya değiştirilmiş bir ortam değişkenini kaydetmenize olanak tanır.

Örneğin, değeri makine kapsamına olan yeni bir ortam değişkenini Foo Barkaydetmek için:

[Environment]::SetEnvironmentVariable('Foo', 'Bar', 'Machine')

Bir ortam değişkenini, değişkenin değerini boş bir dize olarak ayarlayarak kullanıcı veya makine kapsamından silebilirsiniz.

[Environment]::SetEnvironmentVariable('Foo', '', 'Machine')

Sistem Denetim Masası ortam değişkenlerini ayarlama

Sistem Denetim Masası, Kullanıcı ve Sistem (Makine) kapsamlarında var olan ortam değişkenlerini ekleyebilir veya düzenleyebilirsiniz. Windows bu değerleri kayıt defterine yazarak oturumlar ve sistem yeniden başlatmaları arasında kalıcı olmasını sağlar.

System Denetim Masası kullanarak Windows'ta bir ortam değişkeninde kalıcı bir değişiklik yapmak için:

  1. Sistem Denetim Masası açın.
  2. Sistem'i seçin.
  3. Gelişmiş Sistem Ayarları'nı seçin.
  4. Gelişmiş sekmesine gidin.
  5. Ortam Değişkenleri.... öğesini seçin.
  6. Değişikliklerinizi yapın.

Windows olmayan platformlarda kalıcı ortam değişkenleri oluşturma

Linux ve macOS'ta, işletim sisteminin bir uygulamayı başlatmadan önce ortam değişkenlerini ayarlamak için kullandığı yapılandırma dosyaları ve betikleri vardır.

PowerShell'i varsayılan (oturum açma) kabuğu olarak çalıştırırken, işletim sistemi tarafından desteklenen genel başlatma dosyalarında ortam değişkenleri tanımlayabilirsiniz. Örneğin Linux'ta, dosyaya /etc/environment ortam değişkenleri ekleyebilir veya ortam değişkenlerini ayarlayıp klasöre koyan /etc/profile.d bir betik oluşturabilirsiniz. macOS'ta, dosyaya /etc/profile ortam değişkenleri ekleyebilirsiniz.

PowerShell'i başka bir kabuktan başlatırken, için veya ~/.zshrc zshgibi ~/.bashrc bash oturum açma dışı kabuklar tarafından kullanılan kabuğa özgü başlatma dosyalarında ortam değişkenleri tanımlayabilirsiniz.

Daha fazla bilgi için işletim sisteminizin ve varsayılan kabuğunuzun belgelerine bakın.

PowerShell 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:

  • POWERSHELL_TELEMETRY_OPTOUT

    Telemetriyi geri çevirmek için ortam değişkenini , yesveya 1olarak trueayarlayın. Daha fazla bilgi için bkz . about_Telemetry.

    Bu ortam değişkeninin etkili olması için PowerShell işlemi başlatılmadan önce ayarlanması gerekir. Kalıcı ortam değişkenleri oluşturma hakkında bilgi için önceki bölümlere bakın.

  • POWERSHELL_DISTRIBUTION_CHANNEL

    PowerShell 7.2 sürümünden başlayarak, bu ortam değişkeni yükleyici paketleri tarafından PowerShell için yükleme yöntemini ve kaynağını kaydedecek şekilde ayarlanır.

    Bu bilgiler, Microsoft'a gönderilen telemetri verilerine eklenir. Kullanıcılar bu değeri değiştirmemelidir.

  • POWERSHELL_UPDATECHECK

    Güncelleştirme bildirimi davranışı ortam değişkeni kullanılarak POWERSHELL_UPDATECHECK değiştirilebilir. Daha fazla bilgi için bkz . about_Update_Notifications.

    Aşağıdaki değerler desteklenir:

    • Off güncelleştirme bildirimi özelliğini kapatır
    • Default , tanımlamama POWERSHELL_UPDATECHECKile aynıdır:
      • GA sürümlerine güncelleştirme bildirimi
      • Önizleme/RC sürümleri, GA güncelleştirmelerini ve önizleme sürümlerini bildirir
    • LTS yalnızca uzun süreli hizmet (LTS) GA sürümlerine yönelik güncelleştirmeleri bildirir

    PowerShell işlemi başlatılmadan önce ortam değişkeninin varsayılan olmayan değerleri ayarlanmalıdır. Kalıcı ortam değişkenleri oluşturma hakkında bilgi için önceki bölümlere bakın.

  • PSExecutionPolicyPreference

    Geçerli oturum için ayarlanan yürütme ilkesini depolar. Bu ortam değişkeni yalnızca tek bir oturum için bir yürütme ilkesi ayarladığınızda bulunur. Bunu iki farklı yolla yapabilirsiniz.

    • Oturum için yürütme ilkesini ayarlamak için ExecutionPolicy parametresini kullanarak komut satırından bir oturum başlatın.

    • cmdlet'ini Set-ExecutionPolicy kullanın. Scope parametresini değeriyle Processkullanın.

    • Ortam değişkenini el ile ayarlayın. Bu değişkenin değerinin değiştirilmesi geçerli işlemin yürütme ilkesini değiştirir.

    Bu bilgiler yalnızca Windows platformu için geçerlidir. Daha fazla bilgi için bkz. about_Execution_Policies.

  • PSModulePath

    Ortam $env:PSModulePath değişkeni, modülleri ve kaynakları bulmak için aranan klasör konumlarının listesini içerir. Windows'ta, klasör konumlarının listesi noktalı virgül (;) karakteriyle ayrılır. Windows olmayan platformlarda iki nokta üst üste (:), ortam değişkenindeki klasör konumlarını ayırır.

    Varsayılan olarak, atanan $env:PSModulePath geçerli konumlar şunlardır:

    • Sistem genelinde 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üklü olduğu 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 konumudur$env:ProgramFiles\PowerShell\Modules.
      • Windows olmayan sistemlerde, kullanıcıya özgü CurrentUser kapsamının $HOME/.local/share/powershell/Modules konumu klasördür. AllUsers kapsamının konumudur/usr/local/share/powershell/Modules.

    Buna ek olarak, Program Files dizini gibi diğer dizinlere modül yükleyen kurulum programları, konumlarını değerine $env:PSModulePathekleyebilir.

    Daha fazla bilgi için bkz . about_PSModulePath.

  • 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 mevcut 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. Değerin, PowerShell'in dosya oluşturma ve yazma iznine sahip olduğu bir tam yolu (dosya adı dahil) adlandırması gerekir.

    Bu ortam değişkenindeki değişiklikler yalnızca alt işlemleri etkiler. Kalıcı ortam değişkenleri oluşturma hakkında bilgi için önceki bölümlere bakın.

    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 can't 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 kullanılarak bildirilen hataları görebilirsiniz:

    Trace-Command -PSHost -Name Modules -Expression {
      Import-Module Microsoft.PowerShell.Management -Force
    }
    
  • PSDisableModuleAnalysisCacheCleanup

    Modül analizi önbelleğini yazarken, PowerShell gereksiz yere 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 1olarak ayarlayarak bunları kapatabilirsiniz.

    Bu ortam değişkeninin ayarlanması, geçerli işlemdeki sonraki temizleme olayları için geçerli olur. Temizleme işleminin başlangıçta devre dışı bırakıldığından emin olmak için PowerShell'i başlatmadan önce ortam değişkenini ayarlamanız gerekir. Kalıcı ortam değişkenleri oluşturma hakkında bilgi için önceki bölümlere bakın.

PowerShell tarafından kullanılan diğer ortam değişkenleri

Yol bilgileri

  • PATH

    Ortam değişkeni, $env:PATH işletim sisteminin yürütülebilir dosyalar için arama yaptığı klasör konumlarının listesini içerir. Windows'ta, klasör konumlarının listesi noktalı virgül (;) karakteriyle ayrılır. Windows olmayan platformlarda iki nokta üst üste (:), ortam değişkenindeki klasör konumlarını ayırır.

  • PATHEXT

    değişkeni, $env:PATHEXT Windows'un yürütülebilir dosya olarak kabul ettiğini düşündüğü dosya uzantılarının listesini içerir. Listelenen uzantılardan birine sahip bir betik dosyası PowerShell'den yürütülürse, betik geçerli konsol veya terminal oturumunda çalışır. Dosya uzantısı listelenmiyorsa, betik yeni bir konsol oturumunda çalışır.

    Başka bir betik dilinin betiklerinin geçerli konsol oturumunda çalıştığından emin olmak için, betik dili tarafından kullanılan dosya uzantısını ekleyin. Örneğin, python betiklerini geçerli konsolda çalıştırmak için uzantıyı .py ortam değişkenine ekleyin. Windows'un uzantıyı .py yürütülebilir dosya olarak desteklemesi için CMD komut kabuğunun ftype ve assoc komutlarını kullanarak dosya uzantısını kaydetmeniz gerekir. PowerShell'in dosya işleyicisini kaydetmek için doğrudan bir yöntemi yoktur. Daha fazla bilgi için ftype komutunun belgelerine bakın.

    PowerShell betikleri her zaman geçerli konsol oturumunda başlar. Uzantıyı .PS1 eklemeniz gerekmez.

  • XDG Değişken

    Windows olmayan platformlarda PowerShell, XDG Temel Dizin Belirtimi tarafından tanımlanan aşağıdaki XDG ortam değişkenlerini kullanır.

    • XDG_CONFIG_HOME
    • XDG_DATA_HOME
    • XDG_CACHE_HOME

Terminal özellikleri

PowerShell 7.2'de başlayarak, çıkışı renklendiren ANSI kaçış dizileri gibi Sanal Terminal özelliklerini denetlemek için aşağıdaki ortam değişkenleri kullanılabilir. ANSI kaçış dizileri desteği veya NO_COLOR ortam değişkenleri kullanılarak TERM kapatılabilir.

  • TERM

    Aşağıdaki davranış değerleri $env:TERM aşağıdaki gibi değişir:

    • dumb -Ayarlar $Host.UI.SupportsVirtualTerminal = $false
    • xterm-mono -Ayarlar $PSStyle.OutputRendering = PlainText
    • xtermm -Ayarlar $PSStyle.OutputRendering = PlainText
  • NO_COLOR

    Varsa $env:NO_COLOR , $PSStyle.OutputRendering olarak ayarlanır PlainText. Ortam değişkeni hakkında NO_COLOR daha fazla bilgi için bkz https://no-color.org/. .

Ayrıca bkz.