PowerShell Ortam Değişkenleri: Temel Kılavuz


İşin püf noktasını öğrendikten sonra Windows ortam değişkenlerini ayarlamak, ortam değişkenlerini okumak ve yeni ortam değişkenleri oluşturmak için PowerShell'i kullanmak kolaydır. Bu makalede öğreneceğiniz püf noktaları, Windows 10 ortam değişkenlerinin yanı sıra Windows 7 SP1/Windows Server 2008'den sonraki tüm Windows istemcileri/sunucuları için de işe yarayacaktır.

PowerShell, $env: PSDrive'dan Windows ortam değişkenleriyle etkileşimde bulunmak için birçok farklı yol sunar. kayıt defteri ve [System.Environment] .NET sınıfı. Bu adım adım açıklamalı kılavuzda ortam değişkeni kapsamını anlamak da dahil olmak üzere her yöntem hakkında bilgi edineceksiniz.

Varsayımlar

Bu makale boyunca Windows 10'da Windows PowerShell 5.1 kullanacağım. Ancak Windows 7 SP1 veya sonraki sürümlerde Windows PowerShell'in v3'ten sonraki bir sürümüne sahipseniz, size göstermek üzere olduğum teknikler gayet iyi çalışmalıdır.

Ortam Değişkenleri Nelerdir?

Ortam değişkenleri, adından da anlaşılacağı gibi, Windows ve uygulamalar tarafından kullanılan ortam hakkındaki bilgileri depolar. Ortam değişkenlerine Windows Gezgini gibi grafik uygulamalar ve Not Defteri gibi düz metin düzenleyicilerin yanı sıra cmd.exe ve PowerShell aracılığıyla erişilebilir.

Ortam değişkenlerini kullanmak, PowerShell komut dosyalarınızda veya modüllerinizde dosya yollarının, kullanıcı veya bilgisayar adlarının ve çok daha fazlasının sabit kodlanmasını önlemenize yardımcı olur.

Ortak Ortam Değişkenleri

PowerShell'de ortam değişkenleriyle nasıl çalışılacağı hakkında daha fazla bilgi edinmeye başladığınızda birçok farklı değişkenle karşılaşacaksınız. Bazıları diğerlerinden daha faydalıdır. Aşağıda bazı ortak ortam değişkenlerinin ve bunların referans amacıyla kullanımlarının bir listesi bulunmaktadır.

ClientName

Uzak Masaüstü oturumu aracılığıyla bağlanan uzak bilgisayarın adı.

SessionName

Bu, geçerli Windows oturumunun işletim sistemi tarafından konsolda çalışıyor olarak kabul edilip edilmediğini belirlemeye yardımcı olur. Konsol oturumları için OturumAdı 'Konsol' olacaktır. Hyper-V Sanal Makinelerine yönelik Gelişmiş Oturum bağlantıları, SessionName'i 'Konsol' olarak bildirmezken, Standart Oturumlar bunu yapar.

ComputerName

Bilgisayarın adı.

SystemRoot and Windir

Geçerli Windows kurulumunun yolu.

ProgramFiles and ProgramFiles(x86)

x64 ve x86 programları için varsayılan konumlar.

ProgramW6432

Programlar için varsayılan konum; 32/64 bit yeniden yönlendirmeyi önler. Bu değişken yalnızca 64 bit platformda çalışan 32 bit işlemler için geçerlidir. Bu, 64 bitlik bir sistemde 32 bitlik bir PowerShell örneğinin ne zaman çalıştığını tanımlamak için kullanabileceğiniz anlamına gelir.

UserDNSDomain

Geçerli kullanıcının oturum açtığı Active Directory etki alanının Tam Nitelikli Etki Alanı Adı. Yalnızca alan adı oturum açma işlemleri için mevcuttur.

UserDomain

Geçerli kullanıcının oturum açtığı etki alanının NETBIOS stili adı. Etki alanı yoksa bir bilgisayar adı olabilir.

UserDomainRoamingProfile

Varsa, kullanıcının dolaşım profilinin merkezi kopyasının konumu. Yalnızca alan adı oturum açma işlemleri için mevcuttur.

UserName

Şu anda oturum açmış olan kullanıcının adı.

UserProfile

Geçerli kullanıcının profilinin yerel bilgisayardaki konumu.

Ortam Değişkeni Kapsamları

Ortam değişkenlerinin üç kapsamı vardır. Kapsamları, genel bir resim elde etmek için oluşturulan değişken katmanları olarak düşünün. Bu "katmanlar" bir araya getirildiğinde, Windows'ta çalışan herhangi bir işlem için birçok farklı ortam değişkeni sağlar.

Ortam Değişkeni Kapsamı “Hiyerarşi”

Bu “katmanların” her biri ya birleşir ya da birbirinin üzerine yazılır. Bunlar şuna benzer bir hiyerarşide tanımlanır: makine -> kullanıcı -> işlem; kapsam dahilindeki her değişken, eğer ana değişkende mevcutsa, ana değişkenin üzerine yazar. kapsam.

Örneğin, ortak bir ortam değişkeni TEMP'dir. Bu değişken, Windows'un yerel geçici klasörüne giden klasör yolunu saklar. Bu ortam değişkeni şu şekilde ayarlanmıştır:

  • makine kapsamında C:\WINDOWS\TEMP
  • kullanıcı kapsamındaki C:\Users\\AppData\Local\Temp
  • işlem kapsamındaki C:\Users\\AppData\Local\Temp.

user kapsamında ayarlanmış bir TEMP ortam değişkeni yoksa sonuç C:\WINDOWS\TEMP olacaktır.

Ortam Değişkeni Kapsam Türleri

Windows'ta üç farklı ortam değişkeni kapsamı vardır.

Makine

Machine kapsamındaki ortam değişkenleri, çalışan Windows örneğiyle ilişkilendirilir. Herhangi bir kullanıcı hesabı bunları okuyabilir, ancak bunların ayarlanması, değiştirilmesi veya silinmesinin yükseltilmiş ayrıcalıklarla yapılması gerekir.

Kullanıcı

user kapsamındaki ortam değişkenleri, geçerli işlemi çalıştıran kullanıcıyla ilişkilendirilir. Kullanıcı değişkenleri, aynı ada sahip makinekapsamlı değişkenlerin üzerine yazar.

Not: Microsoft, Makine ve Kullanıcı kapsamlı ortam değişkeni değerlerinin 2048'den fazla karakter içermemesini önerir.

İşlem

işlem kapsamındaki ortam değişkenleri, makine ve kullanıcı kapsamlarının yanı sıra Windows'un dinamik olarak oluşturduğu bazı değişkenlerin birleşimidir.

Aşağıda, çalışan bir işlemin kullanabileceği ortam değişkenlerinin bir listesi bulunmaktadır. Bu değişkenlerin tümü dinamik olarak oluşturulur.

    ALLUSERSPROFILE
    APPDATA
    COMPUTERNAME
    HOMEDRIVE
    HOMEPATH
    LOCALAPPDATA
    LOGONSERVER
    PROMPT
    PUBLIC
    SESSION
    SystemDrive
    SystemRoot
    USERDNSDOMAIN
    USERDOMAIN
    USERDOMAIN_ROAMINGPROFILE
    USERNAME
    USERPROFILE

Kayıt Defterindeki Ortam Değişkenleri

Ortam değişkenleri, biri kullanıcı kapsamı ve diğeri makine kapsamı için olmak üzere iki kayıt defteri konumunda depolanır.

Ortam Değişkenlerini Yönetmek İçin Kayıt Defterini Kullanmayın

Kayıt defterindeki değişkenlerde değişiklik yaparken bir sorun var. Çalışan herhangi bir işlem kayıt defterindeki değişken değişiklikleri görmez. Windows onlara bir değişiklik olduğunu bildirmediği sürece, işlemler yalnızca işlem başlatıldığında mevcut olan kayıt defteri değişkenlerini ve değerlerini görür.

Kayıt defterini doğrudan değiştirmek yerine .NET sınıfını kullanabilirsiniz. .NET [System.Environment] sınıfı, makine ve kullanıcı-kapsamlı ortam değişkenlerini değiştirebilir ve kayıt defteri temizliğini sizin için gerçekleştirebilir.

Ortam değişkenlerini doğrudan kayıt defterinde değiştirmek mümkün olsa da mantıklı değildir. .NET sınıfı daha basit, Microsoft tarafından desteklenen bir yaklaşım sunar. Bu makalenin ilerleyen kısımlarında [System.Environment] .NET sınıfını kullanmayı öğreneceksiniz.

Ortam Değişkeni Kayıt Konumları ve Sorgulama

Umarım kayıt defterini doğrudan değiştirmemeye ikna olmuşsunuzdur, ancak orada ne olduğuna bir göz atmak isterseniz, tüm kullanıcı ortamı değişkenlerini HKEY_CURRENT_USER\Environment anahtarında bulabilirsiniz. Makine kapsamlı ortam değişkenleri HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment konumunda depolanır.

Bu anahtarlardan herhangi birinin içinde REG_SZ veya REG_EXPAND_SZ türündeki kayıt defteri değerleri bulunur. REG_EXPAND_SZ değerleri, değerlerinin bir parçası olarak gömülü ortam değişkenlerini içerir. Değer alındığında bu ortam değişkenleri genişletilir.

Bunu göstermek için REG yardımcı programını kullanın. Bu, Windows'un içerdiği küçük bir komut satırı yardımcı programıdır.

TEMP ortam değişkenini aşağıda görüldüğü gibi sorgulayın. TEMP değişkeninin değerini almak için REG'i QUERY parametresiyle çalıştırın.

> REG QUERY HKCU\Environment /V TEMP

HKEY_CURRENT_USER\Environment     
    TEMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp

Bazen ortam değişkenlerinin yukarıdaki gibi yüzde sembolleriyle (%BİLGİSAYARADI%) çevrelenmiş olarak görüntülendiğini fark edeceksiniz. Bu, ortam değişkenlerini cmd.exe ve toplu iş dosyaları aracılığıyla göstermenin eski usul yoludur. PowerShell'in bu biçimi tanımadığını unutmayın.

REG yardımcı programı, kayıt defteri değerinin yerel değerini görmemize olanak tanır. Değer türü REG_EXPAND_SZ'dir ve değer %USERPROFILE% ortam değişkenini içerir.

Kayıt defteri değerini almak için PowerShell'i kullanmayı tercih ederseniz aşağıda gösterildiği gibi Get-Item cmdlet'ini kullanarak bunu yapabilirsiniz.

PS51> Get-ItemProperty -Path HKCU:\Environment -Name TEMP

TEMP         : C:\Users\<your username>\AppData\Local\Temp
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Environment
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER
PSChildName  : Environment
PSDrive      : HKCU
PSProvider   : Microsoft.PowerShell.Core\Registry

GUI aracılığıyla Windows Ortam Değişkenlerini Görüntüleme ve Ayarlama

Kullanıcı ve sistem ortamı değişkenlerinin GUI görünümünü görmek için SystemPropertiesAdvanced.exe 'yi PowerShell'den, bir komut isteminden veya Windows Tuşu+R'den çalıştırarak Gelişmiş Sistem Özellikleri sekmesini görüntüleyin . Aşağıdaki resimde vurgulanan EnvironmentVariables düğmesini tıklayın.

Aşağıda gösterilen Ortam Değişkenleri iletişim kutusu, kullanıcı ve makine kapsamlı ortam değişkenlerini görüntülemenize, oluşturmanıza ve değiştirmenize olanak tanır. İletişim kutusunun makine kapsamındaki değişkenlere Sistem değişkenleri olarak atıfta bulunduğunu unutmayın.

Artık ortam değişkenlerini anladığınıza göre, burada ne amaçla bulunduğunuza, bunları PowerShell ile yönetmeye geçelim!

PowerShell'i kullanarak ortam değişkenleriyle etkileşim kurmanın birkaç farklı yolu vardır.

  • Env: PSDrive ve Sağlayıcı - oturum tabanlı. Yalnızca geçerli PowerShell oturumu için ortam değişkenlerinin değerlerini ayarlar
  • $env: değişkenler - oturum tabanlı. Yalnızca geçerli PowerShell oturumu için ortam değişkenlerinin değerlerini ayarlar
  • [System.Environment] .NET Sınıfı - oturumlar ve yeniden başlatmalar arasında kullanıcı ve sistem kapsamlı ortam değişkenlerini kalıcı hale getirmenize olanak tanır

Env: PSDrive ve Sağlayıcı

Ortam değişkenlerini okumanın en iyi yollarından biri, PowerShell sürücüleri (PS sürücüleri) olarak bilinen bir PowerShell konseptidir. PS sürücüsü, ortam değişkenlerini Env: sürücüsü aracılığıyla bir dosya sistemiymiş gibi işlemenize olanak tanır.

Env: Sürücüsüne geçiş

Tüm PS sürücülerinde olduğu gibi, Env:\TEMP, Env:\BİLGİSAYAR ADI vb. yollar aracılığıyla referans verirsiniz. Ancak bazı tuş vuruşlarını kaydetmek için Env'e geçin. : aşağıda gösterildiği gibi herhangi bir dosya sistemi sürücüsü gibi sürün.

PS51> cd Env:
PS51 Env:\>

## or

PS51> Set-Location Env:
PS Env:\>

Env: Sürücüsüyle Sekme Tamamlama

Ortam değişkenlerine erişmek için Get-Item ve Get-ChildItem gibi bir dosya sistemine erişmek için kullandığınız komutların aynılarını kullanabilirsiniz. Ancak dosya sistemi yerine Env: sürücüsünü okuyorsunuz.

Ortam değişkenleri bir PS sürücüsünde depolandığından, aşağıda gösterildiği gibi mevcut değişkenler arasında geçiş yapmak için PowerShell'in sekme tamamlama özelliğini kullanabilirsiniz.

Şimdi ortam değişkenleriyle çalışmak için Env: PS sürücüsünü nasıl kullanabileceğinizi gösteren birkaç örneğe geçelim.

Ortam Değişkenlerini Env: ile Listeleme

PS51> Get-Item -Path Env:
PS51> Get-Item -Path Env:USERNAME

Env: ile Joker Karakter Kullanarak Ortam Değişkenlerini Listeleme

PS51> Get-Item -Path Env:user*

Env: ile Ortam Değişkeni Değerlerini Bulma

Bu komutların sonuçları anahtar/değer [System.Collections.DictionaryEntry] .NET nesneleridir. Bu nesneler, ortam değişkeninin adını Ad özelliğinde ve değeri Value özelliğinde tutar.

Get-Item komut referansını parantez içine alarak ve aşağıda gösterildiği gibi Value özelliğine başvurarak bir ortam değişkeninin belirli bir değerine erişebilirsiniz:

PS51> (Get-Item -Path Env:computername).Value
MYCOMPUTERHOSTNAME

Yalnızca belirli ortam değişkenlerini döndürmeniz gereken durumlarda, Select-Object ve Where-Object gibi standart PowerShell cmdlet'lerini kullanarak Env: sağlayıcı.

Aşağıdaki örnekte yalnızca BİLGİSAYARADI ortam değişkeni döndürülür.

PS51> Get-ChildItem -Path Env: | Where-Object -Property Name -eq 'COMPUTERNAME'

Alternatif bir yöntem olarak Get-Content cmdlet'ini kullanın. Bu cmdlet, ortam değişkeninin değerini içeren bir [String] nesnesini döndürür. Bu nesnenin kullanımı, Ad ve Value özelliklerine sahip bir nesne yerine yalnızca değeri döndürdüğü için daha kolaydır.

PS51> Get-Content -Path Env:\COMPUTERNAME

Demo: Bir Dizeye Ortam Değerlerini Ekleme

Get-Content'i kullanarak bir ortam değişkeninin değerini bulabilir ve örneğin COMPUTERNAME ortam değişkenini bir metin dizesine ekleyebilirsiniz.

PS51> 'Computer Name is: {0}' -f (Get-Content -Path Env:COMPUTERNAME)
Computer Name is: MYCOMPUTER

Env: ile Ortam Değişkeni Ayarlama (Ve Oluşturma)

New-Item cmdlet'ini kullanarak PowerShell ile yeni ortam değişkenleri oluşturun. Ad değeri için ortam değişkeninin adını Env:\ biçiminde sağlayın ve Value parametreyi aşağıda gösterildiği gibi seçin.

PS51> New-Item -Path Env:\MYCOMPUTER -Value MY-WIN10-PC
Name                           Value
----                           -----
MYCOMPUTER                     MY-WIN10-PC

Bir ortam değişkeni ayarlamak için Set-item cmdlet'ini kullanın veya halihazırda mevcut değilse yeni bir tane oluşturun. Aşağıda Set-Item cmdlet'ini kullanarak görebilirsiniz, hem ortam değişkenini oluşturabilir, hem de değiştirebilirsiniz.

PS51> Set-Item -Path Env:testvariable -Value "Alpha"

Env: ile Ortam Değişkenini Kopyalama

Bazen bir ortam değişkeninin değerini kopyalamanız gereken bir durum ortaya çıkar. Bunu Copy-Item cmdlet'ini kullanarak yapabilirsiniz.

Aşağıda BİLGİSAYARADI değişkeninin değerinin BİLGİSAYARIM'a kopyalanarak mevcut değerinin üzerine yazıldığını görebilirsiniz.

PS51> Get-Item -Path Env:\MYCOMPUTER

Name                           Value
----                           -----
MYCOMPUTER                     MY-WIN10-PC

PS51> Copy-Item -Path Env:\COMPUTERNAME -Destination Env:\MYCOMPUTER
PS51> Get-Item -Path Env:\MYCOMPUTER

Name                           Value
----                           -----
MYCOMPUTER                     WIN10-1903

Env: ile Ortam Değişkenini Kaldırma

Artık bir ortam değişkenine ihtiyaç duyulmayan durumlar ortaya çıkacaktır. Ortam değişkenlerini üç yöntemden birini kullanarak kaldırabilirsiniz:

  • Bir ortam değişkenini boş bir değere ayarlamak için Set-Item cmdlet'ini kullanın
PS51> Set-Item -Path Env:\MYCOMPUTER -Value ''
  • Remove-Item cmdlet'ini kullanın.
PS51> Remove-Item -Path Env:\MYCOMPUTER
  • Clear-Item cmdlet'ini kullanın.
PS51> Clear-Item -Path Env:\MYCOMPUTER

Bir Ortam Değişkenini Env: ile yeniden adlandırma

Bir ortam değişkeninin adının değiştirilmesinin gerektiği durumlarda, Env: sağlayıcısıyla silip yeniden oluşturmak yerine yeniden adlandırma seçeneğiniz vardır.

Bir ortam değişkeninin değerini korurken adını değiştirmek için Rename-Item cmdlet'ini kullanın. Aşağıda BİLGİSAYARIM değişkeninin değeri korunarak ESKİ BİLGİSAYAR olarak yeniden adlandırıldığını görebileceğinizi görebilirsiniz.

PS51> Rename-Item -Path Env:\MYCOMPUTER -NewName OLDCOMPUTER
PS51> Get-Item -Path OLDCOMPUTER
Name                           Value
----                           -----
OLDCOMPUTER                    WIN10-1903

$Env: Değişkenler

Env: sürücüsünde ortam değişkenlerini dosya olarak ele alma konusunda uzmanlaştıktan sonra, bu bölüm size bunları değişken olarak nasıl ele alacağınızı gösterir. Oturum içi ortam değişkenlerini yönetmenin başka bir yolu da PowerShell İfade Ayrıştırıcısını kullanmaktır. Bu özellik, ortam değişkenlerine erişmek için $Env: kapsamını kullanmanıza olanak tanır.

$Env: ile Ortam Değişkeni Alma

$Env kapsamını kullanarak, aşağıda gösterildiği gibi Get-Item gibi bir komut kullanmadan ortam değişkenlerine doğrudan başvurabilirsiniz.

PS51> $env:computername

Bu yöntem, ortam değişkenlerini aşağıdaki gibi dizelere eklemeyi kolaylaştırır:

PS51> "The Computer Name is {0}" -f $env:computername
The Computer Name is WIN10-1809
PS51> "The Computer Name is $env:computername"
The Computer Name is WIN10-1809

$Env: ile Ortam Değişkeni Ayarlama veya Oluşturma

Bu yöntemi kullanarak bir ortam değişkenini ayarlamak basittir. Bu aynı zamanda aşağıdaki gibi mevcut değilse yeni bir ortam değişkeni de yaratacaktır.

PS51> $env:testvariable = "Alpha"

Mevcut bir değerin üzerine yazmak yerine ekleme yapmak için += sözdizimini kullanın.

PS51> $env:testvariable = "Alpha"
PS51> $env:testvariable += ",Beta"

PS51> $env:testvariable
Alpha,Beta

$Env: ile Ortam Değişkenini Kaldırma

Bu yöntemi kullanarak bir ortam değişkenini kaldırmak için değerini boş bir dizeye ayarlamanız yeterlidir.

PS51> $env:testvariable = ''

[System.Environment] .NET Sınıfını Kullanma

.NET sınıfı [System.Environment], ortam değişkenlerini almak ve ayarlamak için de yöntemler sunar. Bu, çeşitli ortam kapsamlarına doğrudan erişmenin ve PowerShell oturumlarında geçerli olan ortam değişkenlerini ayarlamanın tek yöntemidir.

Aşağıdaki örneklerin tümünde kapsam belirtilmezse süreç kapsamı varsayılır.

[System.Environment]'ı kullanırken birkaç farklı .NET statik sınıf yöntemini kullanacaksınız. Statik yöntemin ne olduğunu anlamanıza gerek yok. Öğrenmek üzere olduğunuz tekniklerin herhangi birini kullanmak için yalnızca anlamanız gerekir; önce sınıfa ([System.Environment]) ve ardından iki iki nokta üst üste (:) başvurmanız gerekir. :) ve ardından yöntem gelir.

Ortam Değişkenlerini [System.Environment] ile Listeleme

Belirli bir kapsamdaki tüm ortam değişkenlerini görmek istiyorsanız GetEnvironmentVariables yöntemini kullanırsınız. Bu yöntem, tüm ortam değişkenlerini yöntem bağımsız değişkeni olarak (parantez içinde) belirtilen kapsama göre döndürür.

PS51> [System.Environment]::GetEnvironmentVariables('User')
PS51> [System.Environment]::GetEnvironmentVariables('Machine')
PS51> [System.Environment]::GetEnvironmentVariables('Process')

# The same as Process
PS51> [System.Environment]::GetEnvironmentVariables()

[System.Environment] ile Tek Ortam Değişkenlerini Alma

Belirli bir ortam değişkenini bulmanız gerekiyorsa bunu iki farklı şekilde yapabilirsiniz.

  • GetEnvironmentVariables(). - önerilmez
  • GetEnvironmentVariable('<var name>','<scope>')

GetEnvironmentVariables()

GetEnvironmentVariables() yöntemini kullanarak, değere başvuruda bulunmak için nokta gösterimini kullanırsınız. [System.Environment] sınıfını ve statik yöntem referansını parantez içine alın, ardından bir nokta ve ardından aşağıdaki gibi ortam değişkeninin adını ekleyin:

PS51> ([System.Environment]::GetEnvironmentVariables()).APPDATA

Ortam değişkenlerine bu şekilde referans verirken büyük harf kullanımıyla eşleştiğinden emin olmanız gerektiğini unutmayın! Yukarıdaki örnekte, appdata'yı kullanarak APPDATA değişkenine başvuruda bulunmayı deneyin. Bunun yerine GetEnvironmentVariable()'ı kullanın.

GetEnvironmentVariable()

Tek ortam değişkenlerini bulmak için GetEnvironmentVariables() yöntemini kullanmak yerine GetEnvironmentVariable() yöntemini kullanın. Büyük harf kullanımıyla sorunu çözer ve kapsamı belirlemenize de olanak tanır.

Bu yöntemi kullanmak için ortam değişkeninin adını ve bu değişkeni aramak istediğiniz kapsamı virgülle ayırarak belirtin.

PS51> [System.Environment]::GetEnvironmentVariable('ComputerName','User')
# Blank

PS51> [System.Environment]::GetEnvironmentVariable('ComputerName','Machine')
# Blank

PS51> [System.Environment]::GetEnvironmentVariable('ComputerName','Process')  WIN10-1903

# The same as Process
PS51> [System.Environment]::GetEnvironmentVariable('ComputerName')
WIN10-1903

[System.Environment] ile Ortam Değişkenini Ayarlama

Verilen kapsam için bir ortam değişkeninin değerini ayarlamak için SetEnvironmentVariable() yöntemini kullanın veya halihazırda mevcut değilse yeni bir tane oluşturun.

Süreç kapsamındaki değişkenleri ayarlarken, süreç kapsamının geçici olduğunu ancak kullanıcı ve makine kapsamlarındaki değişikliklerin kalıcı olduğunu göreceksiniz.

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable','Alpha','User')

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable','Alpha','Process')

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable','Alpha','Machine')

 # The same as Process
PS51> [System.Environment]::SetEnvironmentVariable('TestVariable','Alpha')

Not: SetEnvironmentVariable yönteminin 32767 veya daha fazla karakterden oluşan bir değişken adı veya değeri ile çağrılması bir istisnanın oluşmasına neden olur.

[System.Environment] ile Ortam Değişkenini Kaldırma

Belirli bir kapsam için bir ortam değişkenini, değerini boş bir dizeye ayarlayarak kaldırmak için SetEnvironmentVariable() yöntemini kullanın.

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable', '', 'User')

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable', '', 'Process')

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable', '', 'Machine')

# The same as process
PS51> [System.Environment]::SetEnvironmentVariable('TestVariable', '')

Yararlı PowerShell Ortam Değişkenleri

Diğer birçok Windows uygulaması gibi PowerShell'in de kendine ait bazı ortam değişkenleri vardır. Bilinmesi gereken iki yararlı ortam değişkeni PSExecutionPolicyPreference ve PSModulePath'tir.

PSExecutionPolicyPreference

PSExecutionPolicyPreference ortam değişkeni geçerli PowerShell yürütme ilkesini saklar. Oturuma özel bir PowerShell yürütme ilkesi şu şekilde ayarlanırsa oluşturulur:

  • Set-ExecutionPolicy cmdlet'ini Process'in Scope parametresiyle çalıştırma
  • Oturum için bir politika ayarlamak amacıyla ExecutionPolicy komut satırı parametresini kullanarak yeni bir oturum başlatmak için powershell.exe yürütülebilir dosyasını çalıştırmak.

PSModulePath

PSModulePath ortam değişkeni, tam yol belirtmezseniz PowerShell'in modülleri aradığı yolu içerir. Bireysel dizin yollarının noktalı virgülle ayrıldığı standart PATH ortam değişkenine çok benzer şekilde oluşturulmuştur.

PS51> $env:PSModulePath
C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

Hızlı ipucu: $env:PSModulePath.split(';') kullanarak her yolu ayrı ayrı işleyecek bir dize dizisi elde etmek için her klasörü bölün.

Özet

Ortam değişkenleri, çalışan bir sistem hakkında bilgi almak veya oturumlar ve yeniden başlatmalar arasında bilgi depolamak için yararlı bir yöntemdir. İster yalnızca varsayılan Windows işletim sistemi ortam değişkenlerini okuyup kendinizinkini oluşturuyor olun, artık bunları PowerShell ile çeşitli yolları kullanarak yönetebilirsiniz!

Daha fazla okuma

  • about_Environment_Variables
  • Microsoft belgelerindeki .NET [System.Environment] Sınıfı
  • PowerShell dize biçimini ve genişleyen dizeleri öğrenin

İlgili makaleler