Powershell Modül Yolu | PSModulePath ortam değişkenini öğrenin
Powershell Modül Yoluna Giriş
Sistemde halihazırda kurulu olan modüllerin konumları PSModulePath ortam değişkeninde saklanır. PowerShell cmdlet'lerini genişletmenin iki önemli yolu vardır; bunlar Modüller ve Snapinlerdir. Her ikisi de cmdlet'ler ve işlevlerden oluşan paketlerdir. Snapin'ler ilk geliştirilenlerdi ve PowerShell sürüm 1 ile tanıtıldılar, modüller ise PowerShell sürüm 2'de tanıtıldı. Snapin'ler kullanımdan kaldırılıyor. Snapin'ler derlemelerde tanımlanırken modüller derlemelerde veya PowerShell komut dosyalarında tanımlanır. Hem ek bileşenler hem de modüller, cmdlet'ler, işlevler, değişkenler ve iş akışlarından oluşan bir paketten başka bir şey değildir. Kayıtlı ek bileşenler, "Get-PSSnapin-registered" cmdlet'ini kullanarak öğrenebilir. Kurulu mevcut modüllerin listesi “Get-Module -ListAvailable” cmdlet'i kullanılarak bulunabilir. Bu makale Powershell Modül Yolunu ayrıntılı olarak ele alacaktır.
Dizin'de bulunan Modüllerin Listesi: C:\Program Files\WindowsPowerShell\Modules
| ModuleType | Version | Name |
| Script | 1.0.1 | Microsoft.PowerShell.Operation.Validation |
| Binary | 1.0.0.1 | PackageManagement |
| Script | 3.4.0 | Pester |
| Script | 1.0.0.1 | PowerShellGet |
| Script | 1.2 | PSReadline |
Dizin Dizininde bulunan Modüllerin Listesi:C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
| ModuleType | Version | Name |
| Manifest | 1.0.0.0 | AppBackgroundTask |
| Manifest | 2.0.0.0 | AppLocker |
| Manifest | 1.0.0.0 | AppvClient |
| Manifest | 2.0.0.0 | Appx |
| Script | 1.0.0.0 | AssignedAccess |
| Manifest | 1.0.0.0 | BitLocker |
| Manifest | 2.0.0.0 | BitsTransfer |
| Manifest | 1.0.0.0 | BranchCache |
| Manifest | 1.0.0.0 | CimCmdlets |
| Manifest | 1 | ConfigCI |
| Manifest | 1 | Defender |
| Manifest | 1.0.0.0 | DeliveryOptimization |
| Manifest | 1.0.0.0 | DirectAccessClientComponents |
| Script | 3 | Dism |
| Manifest | 1.0.0.0 | DnsClient |
| Manifest | 1.0.0.0 | EventTracingManagement |
| Manifest | 2.0.0.0 | International |
| Manifest | 1.0.0.0 | iSCSI |
| Script | 1.0.0.0 | ISE |
Yalnızca geçerli oturumda mevcut olan modülleri almak için “Get-Module -All ” cmdlet'i kullanılır. Import-Module cmdlet'inin yardımıyla herhangi bir modül bir oturuma aktarılabilir.
Geçerli oturumdaki modüller:
| ModuleType | Version | Name |
| Script | 1.0.0.0 | ISE |
| Binary | 3.0.0.0 | Microsoft.PowerShell.Commands.Management.dll |
| Binary | 3.0.0.0 | Microsoft.PowerShell.Commands.Utility.dll |
| Manifest | 3.1.0.0 | Microsoft.PowerShell.Management |
| Script | 0 | Microsoft.PowerShell.Utility |
| Manifest | 3.1.0.0 | Microsoft.PowerShell.Utility |
Örnek:
İçe Aktarma Modülü -Ad PSDiagnostics
Verbose parametresi, modül içe aktarılırken modülde bulunan cmdlet'ler ve işlevler hakkında bilgi edinmek için kullanılabilir.
Modülü oturumdan kaldırmak için aşağıdaki cmdlet kullanılabilir
Modül Adını Kaldır PSDiagnostics. Verbose parametresi burada da kullanılabilir.
PSModulePath:
PSModulePath, sistemde yüklü olan modüllerin adresini saklayan bir ortam değişkenidir. Kullanıcı modülün yolunu bilmediğinde veya belirtmediğinde PowerShell onları bulmak için bu değişkeni kullanır. Depolanan modülleri görüntülemek için aşağıdaki cmdlet'i yürütün.
Sözdizimi:
$env:PSModulePathÇıktı:
$env:PSModulePath'in varsayılan değeri aşağıdaki değerlerden biridir
- $HOME\Documents\PowerShell\Modules;
- $PSHOME\Modules veya $HOME\Documents\WindowsPowerShell\Modules;
- $PSHOME\Modüller
PSModulePath'le çalışma
PSModulePath'e aşağıdaki gibi geçici yeni bir yol veya konum eklenebilir.
$env:PSModulePath = $env:PSModulePath + ";c:\windows\test"Ortam değişkeni düzenleyicisi kullanılarak kayıt defterine yeni bir değişken eklenebilir.
Betiği kullanarak yeni bir değişken eklemek için Environment sınıfının SetEnvironmentVariable yönteminin kullanılması gerekir.
$CurrentValue = [Environment]::GetEnvironmentVariable("PSModulePath", "Machine")
[Environment]::SetEnvironmentVariable("PSModulePath", $CurrentValue + ";C:\vignesh\test", "Machine")Yolu veya konumu PSModulePath'ten kaldırmak için değiştirme parametresi kullanılabilir.
$env:PSModulePath -replace ";c:\windows\test".Yukarıdaki cmdlet c:\windows\test'i modül yolundan kaldıracaktır.
Modüllerin Otomatik Olarak İçe Aktarılmasını Etkinleştirme:
Varsayılan olarak PSModulePath'te bulunan modüller yalnızca bir oturumda içe aktarılır. Başka konumlardan modülleri içe aktarmak için Import-Module cmdlet'inin kullanılması gerekir. $PSModuleAutoloadingPreference, modüllerin otomatik olarak içe aktarılıp aktarılmayacağını belirleyen parametredir. Kabul edilebilir değerleri All, ModuleQualified ve Hiçbiri'dir.
Tümü: Varsayılan değerdir. Modüller ilk kullanım için içe aktarılır.
ModuleQualified: Yalnızca kullanıcı bir modül belirtirse içe aktarılır.
Yok: Modüller otomatik olarak içe aktarılmaz. Örn. $PSModuleAutoloadingPreference='yok'
Örnekler:
PSModulePath'e bir modülün yeni konumunu eklemek için.
Giriş:
Function Add-ToPSModulePathEg {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)][String]$ModulePath
)
Write-Host "Add a path tutorial"
if (!($env:PSModulePath.split(";") -contains $ModulePath)){
$Current = $env:PSModulePath
[Environment]::SetEnvironmentVariable("PSModulePath",$Current + ";" + $ModulePath, "Machine")
$env:PSModulePath = [System.Environment]::GetEnvironmentVariable("PSModulePath","Machine")
Write-Host "Path Added"
}else{
Write-Host "$ModulePath is already available in psMOdulePath $env:psModulePath"
}
}Komut dosyasının nasıl çalıştırılacağına ilişkin adımlar:
Yukarıdaki script bir fonksiyondur. Bu nedenle parametrelerin ona iletilmesi gerekir.
İlk önce betiği çalıştırın.
Çıkış bölmesinde Add-ToPSModulePathEg - ModulePath “Buraya eklenecek yol yazın. ”
Referans için aşağıdaki çıktı ekranına bakın
Çıktı:
Yukarıdaki çıktıda betiğin ilk kez ne zaman çalıştırıldığını görüyorsanız. Yol, zaten ModulePath'te yoksa eklenecektir ve Yol ekleme eğitimi, eklenen yolla birlikte yazdırılacaktır. Betik aynı yol için tekrar çalıştırılırsa ikinci çıktı olan “Test4 zaten mevcut” yazdırılır.
PSModulePath'ten bir yolu kaldırmak için:
Giriş:
function Remove-FromPSModulePathEg{
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)][String]$ModulePath
)
Write-Host "Removing a path from PSModulePath Variable"
if ($env:PSModulePath.split(";") -contains $ModulePath){
$NewValue = (($env:PSModulePath).Split(";") | ? { $_ -ne $ModulePath }) -join ";"
[Environment]::SetEnvironmentVariable("PSModulePath", $NewValue, "Machine")
$env:PSModulePath = [System.Environment]::GetEnvironmentVariable("PSModulePath","Machine")
write-Host "$ModulePath removed. Restart the prompt for the changes to take effect."
}else{
write-Host "$ModulePath is not present in $env:psModulePath"
}
}Komut dosyasının nasıl çalıştırılacağına ilişkin adımlar:
Yukarıdaki script bir fonksiyondur. Bu nedenle parametrelerin ona iletilmesi gerekir.
İlk önce betiği çalıştırın.
Çıkış bölmesinde, FromPSModulePathEg - ModulePath “Buraya silinecek yol yazın. ”
Referans için aşağıdaki çıktı ekranına bakın
Çıktı:
Yukarıdaki çıktıda öncelikle yukarıda eklenen yol kaldırılır. Daha sonra çıktıdan bir yolun kaldırılması üretilir. Son olarak, kaldırılan yol için komut dosyası ikinci kez çalıştırıldığında, mevcut olmayan yol üretilir.
PSModulePath'e Aynı Anda Birden Fazla Konum Ekleme
Giriş:
Write-Host "Welcome to adding multiple paths to the PSModulePath Environment Variable"
#storing the paths to be added in an array
$address=@("C:\Vignesh\test","C:\Vignesh\Tickets","C:\Vignesh\Patching","C:\Vignesh\Training Screenshots" )
foreach($add in $address)
{
Write-Host "Adding the path" $add "to the PSModulePath Variable"
$env:PSModulePath = $env:PSModulePath +";$add"
Write-Host "Path added"
Write-Host "Current value of PSModulePath is "$env:PSModulePath
}Çıktı:
PSModulePath'ten Aynı Anda Birden Çok Yolu Kaldırma:
Giriş:
Write-Host "Welcome to deleting multiple paths from the PSModulePath Environment Variable"
Write-Host "Current Value in PSModulePath is" $env:PSModulePath
#storing the paths to be removed from the location
$address=@("C:\Vignesh\test","C:\Vignesh\Tickets","C:\Vignesh\Patching","C:\Vignesh\Training Screenshots" )
foreach($add in $address)
{
if ($env:PSModulePath.split(";") -contains $add){
Write-Host "Removing the path" $add
$NewValue = (($env:PSModulePath).Split(";") | ? { $_ -ne $add }) -join ";"
[Environment]::SetEnvironmentVariable("PSModulePath", $NewValue, "Machine")
$env:PSModulePath = [System.Environment]::GetEnvironmentVariable("PSModulePath","Machine")
write-Host "$add removed"
}
}Çıktı:
Sonuç - Powershell Modül Yolu
Bu nedenle makalede PSModulePath ortam değişkeni ayrıntılı olarak ele alınmıştır. Ayrıca modül ile snapin arasındaki farkı da açıkladı. Dikkat edilmesi gereken bazı önemli noktalar, modülün otomatik yüklenmesinin etkinleştirildiği durumlardır; İlk pozisyonun gerekli modüle sahip olmasına dikkat edilmelidir. Aynı modül için birden fazla sürümün olması durumunda PowerShell varsayılan olarak modülün en son sürümünü kullanır. Ayrıca bir PSModulePath değişkeninin nasıl ekleneceği ve kaldırılacağına ilişkin örnekler de gösterilmiştir. Cmdlet hakkında derinlemesine bilgi edinmek, örnek programlar oluşturmak ve bunların etrafında çalışarak eğlenmek tavsiye edilir.





