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\Modules
depolanı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 konumuDocuments
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ünDocuments
konumunu değiştirebilir. Aşağıdaki komutu kullanarak klasörünüzünDocuments
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:PSModulePath
ekler.
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
- AllUsers modül yolu modül yolundan önce
- Başka:
- Kullanıcı konumu kasıtlı olarak kaldırdığından
$PSHOME
, yalnızca tanımlandığı gibi kullanınPSModulePath
- Kullanıcı konumu kasıtlı olarak kaldırdığından
- Modüller yolu içeriyorsa
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.
PowerShell