Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
DESKRIPSI SINGKAT
Artikel ini menjelaskan tujuan dan penggunaan $Env:PSModulePath variabel lingkungan.
DESKRIPSI PANJANG
Variabel $Env:PSModulePath lingkungan berisi daftar lokasi folder. PowerShell secara rekursif mencari setiap folder untuk file modul (.psd1 atau .psm1) .
Secara default, lokasi efektif yang ditetapkan $Env:PSModulePath adalah:
- Modul yang diinstal dalam cakupan CurrentUser disimpan di
$HOME\Documents\WindowsPowerShell\Modules. - Modul yang diinstal dalam cakupan AllUsers disimpan di
$Env:ProgramFiles\WindowsPowerShell\Modules. - Modul yang dikirim dengan Windows PowerShell disimpan di
$PSHOME\Modules, yaitu$Env:SystemRoot\System32\WindowsPowerShell\1.0\Modules.
KONSTRUKSI POWERSHELL PSMODULEPATH
Nilai $Env:PSModulePath dibangun setiap kali PowerShell dimulai.
Nilainya bervariasi menurut versi PowerShell dan cara Anda meluncurkannya.
Startup Windows PowerShell
Windows PowerShell menggunakan logika berikut untuk membuat PSModulePath saat startup:
- Jika
PSModulePathtidak ada, gabungkan CurrentUser, AllUsers, dan$PSHOMEjalur modul - Jika
PSModulePathada:- Jika
PSModulePathberisi$PSHOMEjalur modul:-
Jalur modul AllUsers dimasukkan sebelum
$PSHOMEjalur modul
-
Jalur modul AllUsers dimasukkan sebelum
- lain:
- Cukup gunakan
PSModulePathseperti yang didefinisikan karena pengguna sengaja menghapus$PSHOMElokasi
- Cukup gunakan
- Jika
Jalur modul CurrentUser diawali hanya jika cakupan $Env:PSModulePath Pengguna tidak ada. Jika tidak, cakupan $Env:PSModulePath Pengguna digunakan sebagaimana didefinisikan.
PERILAKU PENCARIAN MODUL
PowerShell secara rekursif mencari setiap folder di file PSModulePath untuk modul (.psd1 atau .psm1) . Pola pencarian ini memungkinkan beberapa versi modul yang sama diinstal di folder yang berbeda. Contohnya:
Directory: C:\Program Files\WindowsPowerShell\Modules\PowerShellGet
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 8/14/2020 5:56 PM 1.0.0.1
d---- 9/13/2019 3:53 PM 2.1.2
Secara default, PowerShell memuat nomor versi tertinggi modul saat beberapa versi ditemukan. Untuk memuat versi tertentu, gunakan Import-Module dengan parameter FullyQualifiedName . Untuk informasi selengkapnya, lihat Import-Module.
MEMODIFIKASI PSMODULEPATH
Untuk sebagian besar situasi, Anda harus menginstal modul di lokasi modul default. Namun, Anda mungkin perlu mengubah nilai PSModulePath variabel lingkungan.
Misalnya, untuk menambahkan C:\Program Files\Fabrikam\Modules direktori untuk sementara waktu untuk $Env:PSModulePath sesi saat ini, ketik:
$Env:PSModulePath = $Env:PSModulePath+";C:\Program Files\Fabrikam\Modules"
Untuk mengubah nilai PSModulePath di setiap sesi, edit kunci registri yang PSModulePath menyimpan nilai. Nilai PSModulePath disimpan dalam registri sebagai string yang tidak tersedia . Untuk menghindari penyimpanan PSModulePath nilai secara permanen sebagai string yang diperluas , gunakan GetValue() metode pada subkuncu dan edit nilai secara langsung.
Contoh berikut menambahkan C:\Program Files\Fabrikam\Modules jalur ke nilai PSModulePath variabel lingkungan tanpa memperluas string yang tidak terlampir.
$key = (Get-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment')
$path = $key.GetValue('PSModulePath','','DoNotExpandEnvironmentNames')
$path += ';%ProgramFiles%\Fabrikam\Modules'
$key.SetValue('PSModulePath',$path,[Microsoft.Win32.RegistryValueKind]::ExpandString)
Untuk menambahkan jalur ke pengaturan pengguna, gunakan kode berikut:
$key = (Get-Item 'HKCU:\Environment')
$path = $key.GetValue('PSModulePath','','DoNotExpandEnvironmentNames')
$path += ';%ProgramFiles%\Fabrikam\Modules'
$key.SetValue('PSModulePath',$path,[Microsoft.Win32.RegistryValueKind]::ExpandString)