Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kısa açıklama
PowerShell'de ortam değişkenlerine nasıl erişileceğini ve yönetileceğini açıklar.
Uzun açıklama
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_OPTOUTPOWERSHELL_DISTRIBUTION_CHANNELPOWERSHELL_UPDATECHECKPSExecutionPolicyPreferencePSModulePathPSModuleAnalysisCachePathPSDisableModuleAnalysisCacheCleanup
Bu değişkenlerin tam açıklamaları için bu makalenin PowerShell ortam değişkenlerine bakın.
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 set komutunun ve Unix tabanlı ortamlarda setenv komutunun davranışına 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 7.5'te başlayarak ortam değişkenini boş bir dizeye ayarlayabilirsiniz. Ortam değişkenini geçerli oturumdan kaldıracak $null şekilde ayarlamak. Örneğin:
PS> $env:TEST = ''
PS> Get-ChildItem env:TEST
Name Value
---- -----
TEST
PS> $env:TEST = $null
PS> $env:TEST.Length
0
PS> Get-ChildItem env:TEST
Get-ChildItem: Cannot find path 'TEST' because it does not exist.
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 Foosahip ortam değişkeni oluşturmak Bar 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:
PowerShell 7.5'te başlayarak ortam sağlayıcısını ve Set-Item cmdlet'ini kullanarak ortam değişkenini boş bir dizeye ayarlayabilirsiniz. Ortam değişkenini geçerli oturumdan kaldıracak $null şekilde ayarlamak. Örneğin:
PS> Set-Item env:TEST 'Foo'
PS> Get-ChildItem env:TEST
Name Value
---- -----
TEST Foo
PS> Set-Item env:TEST ''
PS> Get-ChildItem env:TEST
Name Value
---- -----
TEST
PS> Set-Item -Path env:TEST -Value $null
PS> Get-ChildItem env:TEST
Get-ChildItem: Cannot find path 'TEST' because it does not exist.
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 kullanın
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
PowerShell 7.5'te başlayarak, yöntemini kullanarak ve boş bir dize veya değişkenin SetEnvironmentVariable() değeri için bir ortam değişkenini boş bir dizeye $null ayarlayabilirsiniz. Örneğin:
PS> [Environment]::SetEnvironmentVariable('Foo','Bar')
PS> Get-ChildItem env:Foo
Name Value
---- -----
Foo Bar
PS> [Environment]::SetEnvironmentVariable('Foo','')
PS> Get-ChildItem env:Foo
Name Value
---- -----
Foo
PS> [Environment]::SetEnvironmentVariable('Foo','bar')
PS> Get-ChildItem env:Foo
Name Value
---- -----
Foo bar
PS> [Environment]::SetEnvironmentVariable('Foo',$null)
PS> Get-ChildItem env:Foo
Name Value
---- -----
Foo
Not
Değişken söz diziminin ve sağlayıcı durumlarının aksine, yöntemini kullanarak $null değerinin SetEnvironmentVariable() atanması ortam değişkenini kaldırmaz.
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 FooBarkaydetmek 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:
- Sistem Denetim Masası açın.
- Sistem'i seçin.
- Gelişmiş Sistem Ayarları'nı seçin.
- Gelişmiş sekmesine gidin.
- Ortam Değişkenleri.... öğesini seçin.
- 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 ~/.bashrcbashgibi ~/.zshrczsh 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_OPTOUTTelemetriyi geri çevirmek için ortam değişkenini ,
trueveyayesolarak1ayarlayı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_CHANNELPowerShell 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_UPDATECHECKGüncelleştirme bildirimi davranışı ortam değişkeni kullanılarak
POWERSHELL_UPDATECHECKdeğiştirilebilir. Daha fazla bilgi için bkz . about_Update_Notifications.Aşağıdaki değerler desteklenir:
-
Offgüncelleştirme bildirimi özelliğini kapatır -
Default, tanımlamamaPOWERSHELL_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
-
LTSyalnı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.
-
PSExecutionPolicyPreferenceGeç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-ExecutionPolicykullanın. Scope parametresini değeriyleProcesskullanı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.
PSModulePathOrtam
$Env:PSModulePathdeğ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:PSModulePathgeç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-Modulemodü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\Moduleskonumu 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/Moduleskonumu klasördür. AllUsers kapsamının konumudur/usr/local/share/powershell/Modules.
- Windows'da, kullanıcıya özgü CurrentUser kapsamının
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.
PSModuleAnalysisCachePathPowerShell, 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 }- Windows PowerShell 5.1:
PSDisableModuleAnalysisCacheCleanupModü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
PATHOrtam değişkeni,
$Env:PATHiş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.PATHEXTdeğişkeni,
$Env:PATHEXTWindows'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ı
.pyortam değişkenine ekleyin. Windows'un uzantıyı.pyyürütülebilir dosya olarak desteklemesi için CMD komut kabuğununftypeveassockomutları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ı
.ps1eklemeniz gerekmez.XDGDeğişkenWindows olmayan platformlarda PowerShell, XDG Temel Dizin Belirtimi tarafından tanımlanan aşağıdaki XDG ortam değişkenlerini kullanır.
XDG_CONFIG_HOMEXDG_DATA_HOMEXDG_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 TERM ortam değişkenleri kullanılarak NO_COLOR kapatılabilir.
TERMAşağıdaki davranış değerleri
$Env:TERMaşağıdaki gibi değişir:-
dumb-Ayarlar$Host.UI.SupportsVirtualTerminal = $false -
xterm-mono-Ayarlar$PSStyle.OutputRendering = PlainText -
xterm-Ayarlar$PSStyle.OutputRendering = PlainText
-
NO_COLORVarsa
$Env:NO_COLOR,$PSStyle.OutputRenderingolarak ayarlanırPlainText. Ortam değişkeni hakkındaNO_COLORdaha fazla bilgi için bkz https://no-color.org/. .
Ayrıca bakınız
PowerShell