Aracılığıyla paylaş


about_PSModulePath

Kısa açıklama

Bu makalede ortam değişkeninin amacı ve kullanımı $Env:PSModulePath açıklanmaktadır.

Uzun açıklama

Ortam $Env:PSModulePath değişkeni, klasör konumlarının listesini içerir. PowerShell, her klasörde modül (.psd1 veya .psm1) dosyalarını özyinelemeli olarak arar.

Varsayılan olarak, atanan $Env:PSModulePath geçerli konumlar şunlardır:

  • CurrentUser kapsamına yüklenen modüller içinde $HOME\Documents\WindowsPowerShell\Modulesdepolanır.
  • AllUsers kapsamında yüklü modüller içinde $Env:ProgramFiles\WindowsPowerShell\Modulesdepolanır.
  • içinde depolanan $PSHOME\ModulesWindows PowerShell ile birlikte gelen modüller.$Env:SystemRoot\System32\WindowsPowerShell\1.0\Modules

PowerShell PSModulePath yapısı

değeri $Env:PSModulePath , PowerShell her başlatıldığında oluşturulur. Değer, PowerShell sürümüne ve nasıl başlattığınıza göre değişir.

Windows PowerShell başlatma

Windows PowerShell, başlangıçta oluşturmak PSModulePath için aşağıdaki mantığı kullanır:

  • Yoksa PSModulePath CurrentUser, AllUsers ve modül yollarını birleştirin $PSHOME
  • Varsa PSModulePath :
    • Modüller yolu içeriyorsa PSModulePath$PSHOME :
      • AllUsers modül yolu modül yolundan önce $PSHOME eklenir
    • başka:
      • Kullanıcı konumu kasıtlı olarak kaldırdığındanPSModulePath, yalnızca tanımlandığı gibi kullanın $PSHOME

CurrentUser modül yolu, yalnızca Kullanıcı kapsamı $Env:PSModulePath yoksa önek olarak eklenir. Aksi takdirde, Kullanıcı kapsamı $Env:PSModulePath tanımlandığı gibi kullanılır.

Modül arama davranışı

PowerShell, MODÜL ( veya .psd1) dosyaları için PSModulePath'teki .psm1 her klasörü özyinelemeli olarak arar. Bu arama düzeni, aynı modülün birden çok sürümünün farklı klasörlere yüklenmesini sağlar. Örneğin:

    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

Varsayılan olarak PowerShell, birden çok sürüm bulunduğunda modülün en yüksek sürüm numarasını yükler. Belirli bir sürümü yüklemek için FullyQualifiedName parametresiyle kullanın.Import-Module Daha fazla bilgi için bkz . Import-Module.

PSModulePath'i Değiştirme

Çoğu durumda modülleri varsayılan modül konumlarına yüklemeniz gerekir. Ancak ortam değişkeninin PSModulePath değerini değiştirmeniz gerekebilir.

Örneğin, geçerli oturumun dizinini C:\Program Files\Fabrikam\Modules$Env:PSModulePath geçici olarak eklemek için şunu yazın:

$Env:PSModulePath = $Env:PSModulePath+";C:\Program Files\Fabrikam\Modules"

Değerini her oturumda değiştirmek PSModulePath için, değerleri depolayarak PSModulePath kayıt defteri anahtarını düzenleyin. PSModulePath Değerler kayıt defterinde genişletilmemiş dizeler olarak depolanır. Değerleri kalıcı olarak genişletilmişPSModulePathkaydetmekten kaçınmak için alt anahtardaki yöntemini kullanın GetValue() ve değeri doğrudan düzenleyin.

Aşağıdaki örnek, genişletilmemiş dizeleri genişletmeden ortam değişkeninin C:\Program Files\Fabrikam\Modules değerine yol eklerPSModulePath.

$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)

Kullanıcı ayarına yol eklemek için aşağıdaki kodu kullanın:

$key = (Get-Item 'HKCU:\Environment')
$path = $key.GetValue('PSModulePath','','DoNotExpandEnvironmentNames')
$path += ';%ProgramFiles%\Fabrikam\Modules'
$key.SetValue('PSModulePath',$path,[Microsoft.Win32.RegistryValueKind]::ExpandString)

Ayrıca bakınız