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 Bar
sahip 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-Item
de kopyalayabilir, ile Set-Item
bir ortam değişkeninin değerini ayarlayabilir, ortam değişkenlerini ile Get-Item
listeleyebilir ve ile Remove-Item
ortam 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, Foo
değ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
Bar
kaydetmek 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 ~/.zshrc
zsh
gibi ~/.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 ,
yes
veya1
olaraktrue
ayarlayı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ırDefault
, tanımlamamaPOWERSHELL_UPDATECHECK
ile 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ğeriyleProcess
kullanı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
.
- 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:PSModulePath
ekleyebilir.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 }
- Windows PowerShell 5.1:
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
1
olarak 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ğununftype
veassoc
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şkenWindows 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ırPlainText
. Ortam değişkeni hakkındaNO_COLOR
daha fazla bilgi için bkz https://no-color.org/. .
Ayrıca bkz.
PowerShell