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
Gunakan 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 GetEnvironmentVariable()
metode 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 dengan SetEnvironmentVariable()
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.
Membuat variabel lingkungan persisten di Windows
Di Windows, ada tiga metode untuk membuat perubahan persisten pada variabel lingkungan:
- Atur di profil Anda
SetEnvironmentVariable()
Menggunakan metode- Menggunakan Panel Kontrol Sistem
Mengatur 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.
Mengatur variabel lingkungan dengan SetEnvironmentVariable()
Di Windows, Anda dapat menentukan cakupan untuk SetEnvironmentVariable()
metode 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 Bar
ke 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')
Mengatur variabel lingkungan dalam 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:
- Buka Panel Kontrol Sistem.
- Pilih Sistem.
- Pilih Pengaturan Sistem Tingkat Lanjut.
- Buka tab Tingkat Lanjut .
- Pilih Variabel Lingkungan....
- Buat perubahan Anda.
Membuat variabel lingkungan persisten pada platform non-Windows
Linux dan macOS memiliki file konfigurasi dan skrip yang digunakan sistem operasi untuk mengatur variabel lingkungan sebelum memulai aplikasi.
Saat menjalankan PowerShell sebagai shell default (masuk), Anda dapat menentukan variabel lingkungan dalam file inisialisasi global yang didukung oleh sistem operasi. Misalnya di Linux, Anda dapat menambahkan variabel lingkungan ke /etc/environment
file atau membuat skrip yang mengatur variabel lingkungan dan meletakkannya di /etc/profile.d
folder. Di macOS, Anda dapat menambahkan variabel lingkungan ke /etc/profile
file.
Saat memulai PowerShell dari shell lain, Anda dapat menentukan variabel lingkungan dalam file inisialisasi khusus shell yang digunakan oleh shell non-login, seperti ~/.bashrc
untuk bash
atau ~/.zshrc
untuk zsh
.
Untuk informasi selengkapnya, lihat dokumentasi untuk sistem operasi dan shell default 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
, ,yes
atau1
. Untuk informasi selengkapnya, lihat about_Telemetry.Agar variabel lingkungan ini berpengaruh, variabel harus diatur sebelum memulai proses PowerShell. Lihat bagian sebelumnya untuk informasi tentang membuat variabel lingkungan persisten.
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. Untuk informasi selengkapnya, lihat about_Update_Notifications.Nilai berikut ini didukung:
Off
menonaktifkan fitur pemberitahuan pembaruanDefault
sama dengan tidak menentukanPOWERSHELL_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)
Nilai non-default variabel lingkungan harus diatur sebelum memulai proses PowerShell. Lihat bagian sebelumnya untuk informasi tentang membuat variabel lingkungan persisten.
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 nilaiProcess
.Atur variabel lingkungan secara manual. Mengubah nilai variabel ini mengubah kebijakan eksekusi proses saat ini.
Informasi ini hanya berlaku untuk platform Windows. 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
.
- Di Windows, lokasi cakupan CurrentUser khusus pengguna adalah
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. Nilai harus memberi nama jalur lengkap (termasuk nama file) bahwa PowerShell memiliki izin untuk membuat dan menulis file.
Perubahan pada variabel lingkungan ini hanya memengaruhi proses anak. Lihat bagian sebelumnya untuk informasi tentang membuat variabel lingkungan persisten.
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 }
- Windows PowerShell 5.1:
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 untuk peristiwa pembersihan berikutnya dalam proses saat ini. Untuk memastikan bahwa pembersihan dinonaktifkan saat startup, Anda harus mengatur variabel lingkungan sebelum memulai PowerShell. Lihat bagian sebelumnya untuk informasi tentang membuat variabel lingkungan persisten.
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 menggunakanftype
perintah danassoc
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/.