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, modülleri ve kaynakları bulmak için aranan klasör konumlarının listesini içerir. PowerShell, her klasörde modül (.psd1 veya .psm1) dosyalarını özyinelemeli olarak arar.

Install-Module modülün geçerli kullanıcı için mi yoksa tüm kullanıcılar için mi yükleneceğini belirtmenize olanak tanıyan bir Scope parametresine sahiptir. Daha fazla bilgi için bkz . Install-Module.

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

  • Sistem genelinde konumlar: Bu klasörler PowerShell ile birlikte gelen modülleri içerir. Bu modüller klasöründe depolanır $PSHOME\Modules . Bu aynı zamanda Windows yönetim modüllerinin yüklendiği konumdur.

    AllUsers kapsamında yüklü modüller içinde $env:ProgramFiles\WindowsPowerShell\Modulesdepolanır.

  • Kullanıcı tarafından yüklenen modüller: Bunlar CurrentUser kapsamında yüklü modüllerdir. CurrentUser kapsamının konumu genellikle $HOME\Documents\WindowsPowerShell\Modules klasördür. Klasörün belirli konumu Documents Windows sürümüne ve klasör yeniden yönlendirme kullandığınızda değişir. Ayrıca, Microsoft OneDrive klasörünüzün Documents konumunu değiştirebilir. Aşağıdaki komutu kullanarak klasörünüzün Documents konumunu doğrulayabilirsiniz: [Environment]::GetFolderPath('MyDocuments').

  • Uygulamaya özgü modüller: Kurulum programları, dizin gibi Program Files diğer dizinlere modül yükleyebilir. Yükleyici, uygulama konumunu değerine $env:PSModulePathekler.

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şlatıldığına 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ığından$PSHOME, yalnızca tanımlandığı gibi kullanın PSModulePath

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 (.psd1 veya .psm1) dosyaları için PSModulePath'teki 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ş dizeler olarak kaydetmekten PSModulePath kaçınmak için alt anahtardaki GetValue yöntemini kullanın ve değeri doğrudan düzenleyin.

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

$key = (Get-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager').OpenSubKey('Environment', $true)
$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 kayıt defteri sağlayıcısını olarak HKLM:\HKCU:\değiştirin.

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

Ayrıca bkz.