about_Environment_Variables

Deskripsi singkat

Menjelaskan cara mengakses dan mengelola variabel lingkungan di PowerShell.

Variabel lingkungan menyimpan data yang digunakan oleh sistem operasi dan program lainnya. PowerShell membuat variabel lingkungan berikut:

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

Untuk deskripsi lengkap variabel ini, lihat variabel lingkungan PowerShell di artikel ini.

Deskripsi panjang

PowerShell dapat mengakses dan mengelola variabel lingkungan di salah satu platform sistem operasi yang didukung. Penyedia lingkungan PowerShell memungkinkan Anda mendapatkan, menambahkan, mengubah, menghapus, dan menghapus variabel lingkungan di konsol saat ini.

Catatan

Tidak seperti Windows, nama variabel lingkungan di macOS dan Linux peka huruf besar/kecil. Misalnya, $env:Path dan $env:PATH merupakan variabel lingkungan yang berbeda pada platform non-Windows.

Variabel lingkungan, tidak seperti jenis variabel lain di PowerShell, selalu disimpan sebagai string. Juga tidak seperti variabel lain, variabel tersebut diwarisi oleh proses turunan, seperti pekerjaan latar belakang lokal dan sesi tempat anggota modul berjalan. Ini membuat variabel lingkungan sangat cocok untuk menyimpan nilai yang diperlukan dalam proses induk dan anak.

Pada Windows, variabel lingkungan dapat didefinisikan dalam tiga cakupan:

  • Cakupan Mesin (atau Sistem)
  • Cakupan pengguna
  • Cakupan proses

Cakupan Proses berisi variabel lingkungan yang tersedia dalam proses saat ini, atau sesi PowerShell. Daftar variabel ini diwarisi dari proses induk dan dibangun dari variabel dalam cakupan Mesin dan Pengguna .

Saat Anda mengubah variabel lingkungan di PowerShell, perubahan hanya memengaruhi sesi saat ini. Perilaku ini menyerupan perilaku set perintah di Windows Command Shell dan setenv perintah di lingkungan berbasis UNIX. Untuk mengubah nilai dalam cakupan Mesin atau Pengguna, Anda harus menggunakan metode kelas System.Environment .

Untuk membuat perubahan pada variabel cakupan mesin, Anda juga harus memiliki izin. Jika Anda mencoba mengubah nilai tanpa izin yang memadai, perintah gagal dan PowerShell menampilkan kesalahan.

PowerShell menyediakan beberapa metode berbeda untuk menggunakan dan mengelola variabel lingkungan.

  • Sintaks variabel
  • Penyedia lingkungan dan cmdlet Item
  • Kelas .NET System.Environment

Menggunakan sintaks variabel

Anda dapat menampilkan dan mengubah nilai variabel lingkungan dengan sintaks berikut:

$Env:<variable-name>

Misalnya, untuk menampilkan nilai WINDIR variabel lingkungan:

$Env:windir
C:\Windows

Dalam sintaks ini, tanda dolar ($) menunjukkan variabel, dan nama drive (Env:) menunjukkan variabel lingkungan diikuti dengan nama variabel (windir).

Anda dapat membuat dan memperbarui nilai variabel lingkungan dengan sintaks berikut:

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

Misalnya, untuk membuat Foo variabel lingkungan:

$Env:Foo = 'An example'

Karena variabel lingkungan selalu string, Anda dapat menggunakannya seperti variabel lain yang berisi string. Contohnya:

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

An example!

Di PowerShell, variabel lingkungan tidak dapat diatur ke string kosong. Mengatur variabel lingkungan ke $null atau string kosong akan menghapusnya dari sesi saat ini. Contohnya:

$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 mengembalikan kesalahan karena variabel lingkungan dihapus. Anda dapat melihat bahwa itu tidak mengembalikan kesalahan saat Anda menggunakannya pada string kosong:

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

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

Untuk informasi selengkapnya tentang variabel di PowerShell, lihat about_Variables.

Menggunakan penyedia Lingkungan dan cmdlet Item

Penyedia Lingkungan PowerShell memberi Anda antarmuka untuk berinteraksi dengan variabel lingkungan dalam format yang menyerupi drive sistem file. Ini memungkinkan Anda mendapatkan, menambahkan, mengubah, menghapus, dan menghapus variabel dan nilai lingkungan di PowerShell.

Misalnya, untuk membuat Foo variabel lingkungan dengan nilai Bar:

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

Anda juga dapat menyalin variabel lingkungan dengan Copy-Item, mengatur nilai variabel lingkungan dengan Set-Item, mencantumkan variabel lingkungan dengan Get-Item, dan menghapus variabel lingkungan dengan Remove-Item.

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".

Get-ChildItem Gunakan cmdlet untuk melihat daftar lengkap variabel lingkungan:

Get-ChildItem Env:

Untuk informasi selengkapnya tentang menggunakan penyedia Lingkungan untuk mengelola variabel lingkungan, lihat about_Environment_Provider.

Menggunakan metode System.Environment

Kelas System.Environment menyediakan metode GetEnvironmentVariable dan SetEnvironmentVariable untuk mendapatkan dan memodifikasi variabel lingkungan.

Contoh berikut membuat variabel lingkungan baru, Foo, dengan nilai Bar lalu mengembalikan nilainya.

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

Anda dapat menghapus variabel lingkungan dengan metode SetEnvironmentVariable dengan menentukan string kosong untuk nilai variabel. Misalnya, untuk menghapus Foo variabel lingkungan:

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

Untuk informasi selengkapnya tentang metode kelas System.Environment , lihat Metode Lingkungan.

Menyimpan perubahan pada variabel lingkungan

Di Windows, ada tiga metode untuk membuat perubahan persisten pada variabel lingkungan: mengaturnya di profil Anda, menggunakan metode SetEnvironmentVariable, dan menggunakan Panel Kontrol Sistem.

Menyimpan variabel lingkungan di profil Anda

Variabel lingkungan apa pun yang Anda tambahkan atau ubah di profil PowerShell Anda tersedia dalam sesi apa pun yang memuat profil Anda. Metode ini berfungsi untuk versi PowerShell apa pun pada platform apa pun yang didukung.

Misalnya, untuk membuat CompanyUri variabel lingkungan dan memperbarui Path variabel lingkungan untuk menyertakan C:\Tools folder, tambahkan baris berikut ke profil PowerShell Anda:

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

Catatan

Di Linux atau macOS, titik dua (:) digunakan alih-alih titik koma(;) untuk memisahkan jalur baru dari jalur yang mendahuluinya dalam daftar.

Anda bisa mendapatkan jalur ke profil PowerShell Anda dengan $PROFILE variabel otomatis. Untuk informasi selengkapnya tentang profil, lihat about_Profiles.

Menyimpan variabel lingkungan dengan SetEnvironmentVariable

Di Windows, Anda dapat menentukan cakupan untuk metode SetEnvironmentVariable sebagai parameter ketiga untuk mengatur variabel lingkungan dalam cakupan tersebut. Cakupan komputer dan pengguna keduanya bertahan di luar proses saat ini, memungkinkan Anda menyimpan variabel lingkungan baru atau yang diubah.

Misalnya, untuk menyimpan variabel Foo lingkungan baru dengan nilai Barke cakupan komputer:

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

Anda dapat menghapus variabel lingkungan dari lingkup pengguna atau mesin dengan mengatur nilai variabel ke string kosong.

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

Menyimpan variabel lingkungan dengan Panel Kontrol Sistem

Dalam Panel Kontrol Sistem, Anda dapat menambahkan atau mengedit variabel lingkungan yang ada dalam cakupan Pengguna dan Sistem (Mesin). Windows menulis nilai-nilai ini ke Registri sehingga bertahan di seluruh sesi dan memulai ulang sistem.

Untuk membuat perubahan persisten pada variabel lingkungan di Windows menggunakan Panel Kontrol Sistem:

  1. Buka Panel Kontrol Sistem.
  2. Pilih Sistem.
  3. Pilih Pengaturan Sistem Tingkat Lanjut.
  4. Buka tab Tingkat Lanjut .
  5. Pilih Variabel Lingkungan....
  6. Buat perubahan Anda.

Variabel lingkungan PowerShell

Fitur PowerShell dapat menggunakan variabel lingkungan untuk menyimpan preferensi pengguna. Variabel ini berfungsi seperti variabel preferensi, tetapi diwarisi oleh sesi turunan sesi tempat variabel dibuat. Untuk informasi selengkapnya tentang variabel preferensi, lihat about_Preference_Variables.

Variabel lingkungan yang menyimpan preferensi meliputi:

  • POWERSHELL_TELEMETRY_OPTOUT

    Untuk menolak telemetri, atur variabel lingkungan ke true, , yesatau 1.

    Untuk informasi selengkapnya, lihat about_Telemetry.

  • POWERSHELL_DISTRIBUTION_CHANNEL

    Dimulai di PowerShell 7.2, variabel lingkungan ini diatur oleh paket alat penginstal untuk merekam metode dan sumber penginstalan untuk PowerShell.

    Informasi ini disertakan dalam data telemetri yang dikirim ke Microsoft. Pengguna tidak boleh mengubah nilai ini.

  • POWERSHELL_UPDATECHECK

    Perilaku pemberitahuan pembaruan dapat diubah menggunakan POWERSHELL_UPDATECHECK variabel lingkungan. Nilai berikut ini didukung:

    • Off menonaktifkan fitur pemberitahuan pembaruan
    • Default sama dengan tidak menentukan POWERSHELL_UPDATECHECK:
      • Rilis GA memberi tahu pembaruan untuk rilis GA
      • Rilis Pratinjau/RC memberi tahu pembaruan untuk GA dan rilis pratinjau
    • LTS hanya memberi tahu pembaruan untuk rilis GA layanan jangka panjang (LTS)

    Untuk informasi selengkapnya, lihat about_Update_Notifications.

  • PSExecutionPolicyPreference

    Menyimpan kebijakan eksekusi yang ditetapkan untuk sesi saat ini. Variabel lingkungan ini hanya ada ketika Anda menetapkan kebijakan eksekusi untuk satu sesi. Anda dapat melakukan ini dengan dua cara berbeda.

    • Mulai sesi dari baris perintah menggunakan parameter ExecutionPolicy untuk mengatur kebijakan eksekusi untuk sesi tersebut.

    • Set-ExecutionPolicy Gunakan cmdlet. Gunakan parameter Cakupan dengan nilai Process.

      Untuk informasi selengkapnya, lihat about_Execution_Policies.

  • PSModulePath

    Variabel $env:PSModulePath lingkungan berisi daftar lokasi folder yang dicari untuk menemukan modul dan sumber daya. Di Windows, daftar lokasi folder dipisahkan oleh karakter titik koma (;). Pada platform non-Windows, titik dua (:) memisahkan lokasi folder dalam variabel lingkungan.

    Secara default, lokasi efektif yang ditetapkan $env:PSModulePath adalah:

    • Lokasi di seluruh sistem: Folder ini berisi modul yang dikirim dengan PowerShell. Modul disimpan di $PSHOME\Modules lokasi. Selain itu, Ini adalah lokasi tempat modul manajemen Windows diinstal.

    • Modul yang diinstal pengguna: Ini adalah modul yang diinstal oleh pengguna. Install-Module memiliki parameter Cakupan yang memungkinkan Anda menentukan apakah modul diinstal untuk pengguna saat ini atau untuk semua pengguna. Untuk informasi selengkapnya, lihat Install-Module.

      • Di Windows, lokasi cakupan CurrentUser khusus pengguna adalah $HOME\Documents\PowerShell\Modules folder . Lokasi cakupan AllUsers adalah $env:ProgramFiles\PowerShell\Modules.
      • Pada sistem non-Windows, lokasi cakupan CurrentUser khusus pengguna adalah $HOME/.local/share/powershell/Modules folder . Lokasi cakupan AllUsers adalah /usr/local/share/powershell/Modules.

    Selain itu, program penyiapan yang menginstal modul di direktori lain, seperti direktori Program Files, dapat menambahkan lokasinya ke nilai $env:PSModulePath.

    Untuk informasi selengkapnya, lihat about_PSModulePath.

  • PSModuleAnalysisCachePath

    PowerShell menyediakan kontrol atas file yang digunakan untuk menyimpan data tentang modul dan cmdletnya. Cache dibaca saat startup saat mencari perintah dan ditulis pada utas latar belakang beberapa saat setelah modul diimpor.

    Lokasi default cache adalah:

    • Windows PowerShell 5.1: $env:LOCALAPPDATA\Microsoft\Windows\PowerShell
    • PowerShell 6.0 dan yang lebih tinggi: $env:LOCALAPPDATA\Microsoft\PowerShell
    • Default non-Windows: ~/.cache/powershell

    Nama file default untuk cache adalah ModuleAnalysisCache. Ketika Anda memiliki beberapa instans PowerShell yang terinstal, nama file menyertakan akhiran heksadesimal sehingga ada nama file unik per penginstalan.

    Catatan

    Jika penemuan perintah tidak berfungsi dengan benar, misalnya IntelliSense menunjukkan perintah yang tidak ada, Anda dapat menghapus file cache. Cache dibuat ulang lain kali Anda memulai PowerShell.

    Untuk mengubah lokasi default cache, atur variabel lingkungan sebelum memulai PowerShell. Perubahan pada variabel lingkungan ini hanya memengaruhi proses anak. Nilai harus memberi nama jalur lengkap (termasuk nama file) bahwa PowerShell memiliki izin untuk membuat dan menulis file.

    Untuk menonaktifkan cache file, atur nilai ini ke lokasi yang tidak valid, misalnya:

    # `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'
    

    Ini mengatur jalur ke perangkat NUL . PowerShell tidak dapat menulis ke jalur tetapi tidak ada kesalahan yang dikembalikan. Anda dapat melihat kesalahan yang dilaporkan menggunakan pelacak:

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

    Saat menulis cache analisis modul, PowerShell memeriksa modul yang tidak ada lagi untuk menghindari cache besar yang tidak perlu. Terkadang pemeriksaan ini tidak diinginkan, dalam hal ini Anda dapat menonaktifkannya dengan mengatur nilai variabel lingkungan ini ke 1.

    Pengaturan variabel lingkungan ini berlaku segera dalam proses saat ini.

Variabel lingkungan lain yang digunakan oleh PowerShell

Informasi jalur

  • JALAN

    Variabel $env:PATH lingkungan berisi daftar lokasi folder yang dicari sistem operasi untuk file yang dapat dieksekusi. Di Windows, daftar lokasi folder dipisahkan oleh karakter titik koma (;). Pada platform non-Windows, titik dua (:) memisahkan lokasi folder dalam variabel lingkungan.

  • PATHEXT

    Variabel $env:PATHEXT berisi daftar ekstensi file yang dianggap Windows sebagai file yang dapat dieksekusi. Saat file skrip dengan salah satu ekstensi yang tercantum dijalankan dari PowerShell, skrip berjalan di konsol atau sesi terminal saat ini. Jika ekstensi file tidak tercantum, skrip berjalan dalam sesi konsol baru.

    Untuk memastikan bahwa skrip untuk bahasa skrip lain berjalan di sesi konsol saat ini, tambahkan ekstensi file yang digunakan oleh bahasa skrip. Misalnya, untuk menjalankan skrip Python di konsol saat ini, tambahkan .py ekstensi ke variabel lingkungan. Agar Windows mendukung .py ekstensi sebagai file yang dapat dieksekusi, Anda harus mendaftarkan ekstensi file menggunakan ftype perintah dan assoc dari shell perintah CMD. PowerShell tidak memiliki metode langsung untuk mendaftarkan handler file. Untuk informasi selengkapnya, lihat dokumentasi untuk perintah ftype .

    Skrip PowerShell selalu dimulai dalam sesi konsol saat ini. Anda tidak perlu menambahkan .PS1 ekstensi.

  • Variabel XDG

    Pada platform non-Windows, PowerShell menggunakan variabel lingkungan XDG berikut seperti yang didefinisikan oleh Spesifikasi Direktori Dasar XDG.

    • XDG_CONFIG_HOME
    • XDG_DATA_HOME
    • XDG_CACHE_HOME

Fitur terminal

Dimulai di PowerShell 7.2, variabel lingkungan berikut dapat digunakan untuk mengontrol fitur Terminal Virtual seperti urutan escape ANSI yang mewarnai output. Dukungan untuk urutan escape ANSI dapat dinonaktifkan menggunakan term atau variabel lingkungan NO_COLOR.

  • ISTILAH

    Nilai $env:TERM berikut mengubah perilaku sebagai berikut:

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

    Jika $env:NO_COLOR ada, maka $PSStyle.OutputRendering diatur ke PlainText. Untuk informasi selengkapnya tentang variabel lingkungan NO_COLOR , lihat https://no-color.org/.

Lihat juga