Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kısa açıklama
Bu makalede, $Env:PSModulePath ortam değişkeninin amacı ve kullanımı açıklanmaktadır.
Uzun açıklama
$Env:PSModulePath ortam değişkeni, klasör konumlarının listesini içerir. PowerShell, modül (.psd1 veya .psm1) dosyaları için her klasörde özyinelemeli olarak aramalar.
Varsayılan olarak, $Env:PSModulePath atanan geçerli konumlar şunlardır:
-
CurrentUser kapsamında yüklü modüller:
- Windows'da bu modüller
$HOME\Documents\PowerShell\Modulesiçinde depolanır.Documentsklasörünün belirli konumu Windows sürümüne ve klasör yeniden yönlendirme kullandığınızda değişir. Ayrıca, Microsoft OneDriveDocumentsklasörünüzün konumunu değiştirebilir.Documentsklasörünüzün konumunu doğrulamak için şu komutu kullanın:[Environment]::GetFolderPath('MyDocuments'). - Windows olmayan sistemlerde bu modüller
$HOME/.local/share/powershell/Modulesklasöründe depolanır.
- Windows'da bu modüller
-
AllUsers kapsamında yüklü modüller:
- Windows'da bu modüller
$Env:ProgramFiles\PowerShell\Modulesiçinde depolanır. - Windows olmayan sistemlerde, bu modüller
/usr/local/share/powershell/Modulesiçinde depolanır.
- Windows'da bu modüller
- PowerShell ile birlikte gelen modüller
$PSHOME\Modulesiçinde depolanır.
Not
PowerShell modülleri içeren uygulamalar, Program Files klasörü gibi Windows'daki diğer dizinlere modül yükleyebilir. Yükleyici paketi konumu $Env:PSModulePatheklemeyebilir.
Windows PowerShell 5.1 için varsayılan konumlar PowerShell 7'den farklıdır.
-
CurrentUser kapsamına yüklenen modüller
$HOME\Documents\WindowsPowerShell\Modulesiçinde depolanır. -
AllUsers kapsamına yüklenen modüller
$Env:ProgramFiles\WindowsPowerShell\Modulesiçinde depolanır. -
$PSHOME\Modules$Env:SystemRoot\System32\WindowsPowerShell\1.0\Modulesiçinde depolanan Windows PowerShell ile birlikte gelen modüller.
PowerShell PSModulePath yapısı
$Env:PSModulePath değeri, 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 PSModulePath oluşturmak için aşağıdaki mantığı kullanır:
-
PSModulePathyoksa, CurrentUserAllUsersve$PSHOMEmodülleri yollarını birleştirin -
PSModulePathvarsa:-
PSModulePath$PSHOMEmodül yolu içeriyorsa:-
AllUsers modülleri yolu,
$PSHOMEmodül yolundan önce eklenir
-
AllUsers modülleri yolu,
- başka:
- Kullanıcı
PSModulePathkonumunu kasıtlı olarak kaldırdığından$PSHOME'yi tanımlandığı gibi kullanmanız gerekir
- Kullanıcı
-
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.
PowerShell 7 başlatma
Windows'da çoğu ortam değişkeni için Kullanıcı kapsamlı değişken varsa, aynı ada sahip Makine kapsamlı bir değişken mevcut olsa bile yeni bir işlem yalnızca bu değeri kullanır. Ortam değişkenleri yolu farklı değerlendirilir.
Windows'da PSModulePath, Path ortam değişkeninin nasıl işlendiğinden benzer şekilde ele alır.
Path diğer ortam değişkenlerinden farklı şekilde ele alınıyor. Bir işlem başlatıldığında Windows, Kullanıcı kapsamlı Path Makine kapsamlı Pathile birleştirir.
- Kullanıcı kapsamlı
PSModulePathalma - Devralınan
PSModulePathortam değişkeniyle karşılaştırma- Aynıysa:
-
ortam değişkeninin semantiğinden sonra AllUsers
PSModulePathsonuna ekleyin - Windows
System32yolu makine tanımlıPSModulePathgeldiğinden açıkça eklenmesi gerekmez
-
ortam değişkeninin semantiğinden sonra AllUsers
- Farklıysa, kullanıcı açıkça değiştirmiş gibi davranın ve AllUsers eklemeyin
- Aynıysa:
- PS7 Kullanıcı, Sistem ve
$PSHOMEyollarına bu sırayla ön ek ekleyin-
powershell.config.jsonkapsamlı bir kullanıcıPSModulePathiçeriyorsa, kullanıcı için varsayılan değer yerine bunu kullanın -
powershell.config.jsonkapsamlı bir sistemPSModulePathiçeriyorsa, sistem için varsayılan yerine bunu kullanın
-
Windows dışı sistemlerde Kullanıcı ve Sistem ortam değişkenlerinin ayrımı yoktur.
PSModulePath devralınır ve önceden tanımlanmamışsa PS7'ye özgü yollar önek olarak eklenir.
Windows PowerShell'i PowerShell 7'den başlatma
Bu tartışma için Windows PowerShell hem powershell.exe hem de powershell_ise.exeanlamına gelir.
$Env:PSModulePath değeri aşağıdaki değişikliklerle WinPSModulePath kopyalanır:
- PS7 kullanıcı modülü yolunu kaldırma
- PS7'yi Sistem modülü yolunu kaldırma
- ps7
$PSHOMEmodül yolunu kaldırma
PS7 modüllerinin Windows PowerShell'de yüklenmemesi için PS7 yolları kaldırılır.
WinPSModulePath değeri, Windows PowerShell başlatılırken kullanılır.
PowerShell 7'ye Windows PowerShell'den başlama
PowerShell 7 başlatma işlemi, Windows PowerShell'in eklediği devralan yolların eklenmesiyle as-is devam eder. PS7'ye özgü yollar ön ekli olduğundan işlevsel bir sorun yoktur.
Modül arama davranışı
PowerShell, PSModulePath modül (.psd1 veya .psm1) dosyaları için 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. Mesela:
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 Import-Module parametresiyle kullanın. 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, PSModulePath ortam değişkeninin değerini değiştirmeniz gerekebilir.
Örneğin, geçerli oturum için C:\Program Files\Fabrikam\Modules dizinini geçici olarak $Env:PSModulePath eklemek için şunu yazın:
$Env:PSModulePath = $Env:PSModulePath+";C:\Program Files\Fabrikam\Modules"
Komuttaki noktalı virgül (;), yeni yolu listede kendisinden önceki yoldan ayırır. Windows olmayan platformlarda iki nokta üst üste (:), ortam değişkenindeki yol konumlarını ayırır.
Windows olmayan bir uygulamada PSModulePath'i değiştirme
Windows olmayan bir ortamdaki her oturum için PSModulePath değerini değiştirmek için önceki komutu PowerShell profilinize ekleyin.
Windows'da PSModulePath'i değiştirme
Her oturumda PSModulePath değerini değiştirmek için, PSModulePath değerlerini depolayarak kayıt defteri anahtarını düzenleyin.
PSModulePath değerleri kayıt defterinde genişletilmemiş dizeleri olarak depolanır. genişletilmiş dizeleri olarak PSModulePath değerlerini kalıcı olarak kaydetmekten kaçınmak için alt anahtardaki GetValue() yöntemini kullanın ve değeri doğrudan düzenleyin.
Aşağıdaki örnek, C:\Program Files\Fabrikam\Modules yolunu genişletilmemiş dizeleri genişletmeden PSModulePath ortam değişkeninin değerine ekler.
$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
PowerShell