about_PSModulePath

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 PSModulePath tidak ada, gabungkan CurrentUser, AllUsers, dan $PSHOME jalur modul
  • Jika PSModulePath ada:
    • Jika PSModulePath berisi $PSHOME jalur modul:
      • Jalur modul AllUsers dimasukkan sebelum $PSHOME jalur modul
    • lain:
      • Cukup gunakan PSModulePath seperti yang didefinisikan karena pengguna sengaja menghapus $PSHOME lokasi

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)

LIHAT JUGA