about_Modules
Kısa açıklama
PowerShell modüllerinin nasıl yükleneceğini, içeri aktarılacağını ve kullanılacağını açıklar.
Uzun açıklama
PowerShell hem komut kabuğu hem de betik dilidir. PowerShell'deki komutlar betikler, işlevler veya cmdlet'ler olarak uygulanır. Dil, işlemenin yapısını ve mantığını sağlayan anahtar sözcükleri ve değişkenler, sağlayıcılar, diğer adlar gibi diğer kaynakları içerir.
Modül, cmdlet'ler, sağlayıcılar, işlevler, değişkenler ve diğer kaynakları içerebilen, bağımsız, yeniden kullanılabilir bir birimdir. Varsayılan olarak PowerShell, modülden ilk kez bir komut kullandığınızda yüklü bir modülü otomatik olarak yükler. değişkenini $PSModuleAutoloadingPreference
kullanarak otomatik modül yükleme davranışını yapılandırabilirsiniz. Daha fazla bilgi için bkz . about_Preference_Variables.
Ayrıca, PowerShell oturumu sırasında modülleri el ile yükleyebilir veya kaldırabilirsiniz. Bir modülü yüklemek veya yeniden yüklemek için kullanın Import-Module
. Modülü kaldırmak için cmdlet'ini Remove-Module
kullanın.
PowerShell, temel bir modül kümesi içerir. Herkes C# veya PowerShell betik dilini kullanarak yeni modüller oluşturabilir. C# dilinde derlenmiş .NET derlemeleri olarak yazılan modüller yerel modüller olarak bilinir. PowerShell'de yazılan modüller betik modülleri olarak bilinir.
Bu makalede PowerShell modüllerinin nasıl kullanılacağı açıklanmaktadır. PowerShell modülleri oluşturma hakkında bilgi için bkz . PowerShell Modülü Yazma.
Not
PowerShell 3.0'dan önce, cmdlet'ler ve sağlayıcılar PowerShell ek bileşenlerinde paketlenmişti. PowerShell 3.0 sürümünden başlayarak, Microsoft.PowerShell.Core ek bileşeni varsayılan olarak her oturuma eklenir. PowerShell'de kalan tek ek bileşen budur. Diğer tüm ek bileşenler modüllere dönüştürüldü. Yeni ek bileşenler oluşturulması artık desteklenmiyor.
Varsayılan modül konumları
PowerShell modülleri aşağıdaki varsayılan konumlarda depolar:
- Windows'da
- Tüm kullanıcıların kapsamı -
$env:ProgramFiles\PowerShell\Modules
- Geçerli kullanıcı kapsamı -
$HOME\Documents\PowerShell\Modules
- PowerShell ile gönderilen modüller -
$PSHOME\Modules
- Tüm kullanıcıların kapsamı -
- Linux ve macOS'ta
- Tüm kullanıcıların kapsamı -
/usr/local/share/powershell/Modules
- Geçerli kullanıcı kapsamı -
$HOME/.local/share/powershell/Modules
- PowerShell ile gönderilen modüller -
$PSHOME/Modules
- Tüm kullanıcıların kapsamı -
Varsayılan olarak, Modules
geçerli kullanıcının klasörü yoktur. veya Install-PSResource
kullanarak Install-Module
kapsamda bir modül CurrentUser
yüklediyseniz, bu cmdlet'ler geçerli kullanıcı için klasörü oluştururModules
. Klasör yoksa el ile oluşturabilirsiniz.
Geçerli kullanıcı için bir Modules
klasör oluşturmak için aşağıdaki komutu kullanın:
$folder = New-Item -Type Directory -Path $HOME\Documents\PowerShell\Modules
Bu konumlar ortam değişkenine $env:PSModulePath
otomatik olarak eklenir. Varsayılan modül konumları hakkında daha fazla bilgi için bkz . about_PSModulePath.
Modül otomatik yükleme
Yüklü bir modülden ilk kez komut çalıştırdığınızda PowerShell bu modülü otomatik olarak içeri aktarır (yükler). Modülün ortam değişkeninde belirtilen konumlarda $env:PSModulePath
depolanması gerekir.
Modül otomatik yükleme, herhangi bir kurulum veya profil yapılandırması olmadan bir modüldeki komutları kullanmanıza olanak tanır. Aşağıdaki örneklerin her biri, öğesini içeren Get-CimInstance
CimCmdlets modülünün oturumunuza aktarılmasına neden olur.
Komutu Çalıştırma
Get-CimInstance Win32_OperatingSystem
Komutu Alma
Get-Command Get-CimInstance
Komut için Yardım Alma
Get-Help Get-CimInstance
Joker karakter*
() ile kullandığınızda Get-Command
PowerShell herhangi bir modülü içeri aktarmaz. Oturumunuzda gerekmeyebilecek modülleri yüklemeden komut bulma için joker karakterler kullanabilirsiniz.
Modülü el ile içeri aktarma
Modül ortam değişkeni tarafından $env:PSModulePath
belirtilen konumlara yüklenmediğinde veya modül paketlenmiş modül yerine tek başına .dll
veya .psm1
dosya olarak sağlandığında modülü el ile içeri aktarmanız gerekir.
Ayrıca, PowerShell sağlayıcıları kullanan komutlar bir modülü otomatik olarak içeri aktarmaz. Örneğin, cmdlet gibi sürücü gerektiren WSMan:
bir komut kullanırsanız, sürücüyü içeren Microsoft.WSMan.Management modülünü içeri aktarmak için cmdlet'ini WSMan:
çalıştırmanız Import-Module
Get-PSSessionConfiguration
gerekebilir.
Modülün oturumunuzda içeri aktarma şeklini de değiştirmek isteyebilirsiniz. Örneğin, prefix parametresi Import-Module
modülden içeri aktarılan cmdlet'lerin isim bölümüne ayırt edici bir ön ek ekler. NoClobber parametresi modülün oturumdaki mevcut komutları gizleyecek veya değiştirebilecek komutlar eklemesini engeller. Daha fazla bilgi için bkz . Ad çakışmalarını yönetme.
Aşağıdaki örnek, BitsTransfer modülünü geçerli oturuma aktarır.
Import-Module BitsTransfer
içinde $env:PSModulePath
olmayan bir modülü içeri aktarmak için modül klasörünün tam yolunu kullanın. Örneğin, dizindeki TestCmdlets modülünü C:\ps-test
oturumunuza eklemek için şunu yazın:
Import-Module C:\ps-test\TestCmdlets
Modül klasöründe yer almamış bir modül dosyasını içeri aktarmak için komutundaki modül dosyasının tam yolunu kullanın. Örneğin, dizinindeki C:\ps-test
TestCmdlets.dll modülünü oturumunuza eklemek için şunu yazın:
Import-Module C:\ps-test\TestCmdlets.dll
Oturumunuza modül ekleme hakkında daha fazla bilgi için bkz . Import-Module.
Her oturumun başında bir modülü içeri aktarma
Import-Module
komutu modülleri geçerli PowerShell oturumunuza aktarır. Başlattığınız her PowerShell oturumuna bir modülü içeri aktarmak için komutunu PowerShell profilinize ekleyin Import-Module
.
Profiller hakkında daha fazla bilgi için bkz . about_Profiles.
Yayımlanan modülü yükleme
Yayımlanan modül, PowerShell Galerisi gibi kayıtlı bir depodan kullanılabilen bir modüldür. PowerShellGet ve Microsoft.PowerShell.PSResourceGet modülleri, PowerShell modüllerini bulmak, yüklemek ve kayıtlı bir depoda yayımlamak için cmdlet'ler sağlar.
PowerShellGet modülü, PowerShell 5.0 ve sonraki sürümlerde bulunur. Microsoft.PowerShell.PSResourceGet modülü, PowerShell 7.4 ve sonraki sürümlerde bulunur ve PowerShell için tercih edilen paket yöneticisidir. Microsoft.PowerShell.PSResourceGet, PowerShell'in eski sürümlerine PowerShellGet ile yan yana yüklenebilir. Install-Module
PowerShell Galerisi modülleri yüklemek için veya Install-PSResource
cmdlet'ini kullanın.
Get-Command Install-Module, Install-PSResource
CommandType Name Version Source
----------- ---- ------- ------
Function Install-Module 2.9.0 PowerShellGet
Cmdlet Install-PSResource 1.0.0 Microsoft.PowerShell.PSResourceGet
Daha fazla bilgi için bkz . PowerShellGet'e Genel Bakış.
Modülü el ile yükleme
Modül içeriğini başka bir klasörden kopyalayarak modülü el ile yükleyebilirsiniz. Bu klasör yerel makinede başka bir konumda veya başka bir makineye yüklenebilir. Bir modülü el ile yüklemek için modül klasörünün tamamını içinde $env:PSModulePath
bulunan yeni bir konuma kopyalayın.
PowerShell'de cmdlet'ini Copy-Item
kullanın. Örneğin, klasöründen klasörü C:\PSTest
kopyalamak MyModule
için aşağıdaki komutu çalıştırın:
$modulePath = $HOME\Documents\PowerShell\Modules\MyModule
Copy-Item -Path C:\PSTest\MyModule\* -Destination $modulePath -Recurse
Herhangi bir konuma modül yükleyebilirsiniz, ancak modüllerinizi varsayılan modül konumuna yüklemek, bunların yönetilmesini kolaylaştırır.
Yüklü modülleri bulma
cmdlet'i Get-Module
geçerli PowerShell oturumunda yüklenen PowerShell modüllerini alır.
Get-Module
Listelenen modüller, yalnızca $env:PSModulePath
konumundan değil, herhangi bir konumdan içeri aktarılan modülleri içerebilir.
içinde yüklü $env:PSModulePath
modülleri listelemek için aşağıdaki komutu kullanın:
Get-Module -ListAvailable
Bu komut, yalnızca geçerli oturuma aktarılan modülleri değil içinde $env:PSModulePath
yüklü olan tüm modülleri alır. Bu komut, diğer konumlara yüklenen modülleri listelemez.
Daha fazla bilgi için bkz . Get-Module.
Modüldeki komutları listeleme
Get-Command
Kullanılabilir tüm komutları bulmak için cmdlet'ini kullanın. Modül, ad ve ada göre gibi komutları filtrelemek için cmdlet'in parametrelerini Get-Command
kullanabilirsiniz.
Modüldeki tüm komutları bulmak için şunu yazın:
Get-Command -Module <module-name>
Örneğin, BitsTransfer modülündeki komutları bulmak için şunu yazın:
Get-Command -Module BitsTransfer
Cmdlet hakkında Get-Command
daha fazla bilgi için bkz . Get-Command.
Modül kaldırma
Bir modülü kaldırdığınızda, modülün eklediği komutlar oturumdan silinir. Örneğin, aşağıdaki komut BitsTransfer modülünü geçerli oturumdan kaldırır.
Remove-Module BitsTransfer
Modülün kaldırılması, modülü içeri aktarma işlemini tersine çevirir. Modülün kaldırılması modülü kaldırmaz. Daha fazla bilgi için bkz . Remove-Module.
Modüllerden ve ek bileşenlerden oturumunuza komutlar eklenebilir. Modüller cmdlet'ler, sağlayıcılar ve işlevler ile değişkenler, diğer adlar ve PowerShell sürücüleri gibi öğeler dahil olmak üzere tüm komut türlerini ekleyebilir. Ek bileşenler yalnızca cmdlet'ler ve sağlayıcılar ekleyebilir.
Bir modülü oturumunuzdan kaldırmadan önce, hangi modülü kaldırmak istediğinizi belirlemek için aşağıdaki komutları kullanın.
Örneğin, ve Get-Help
cmdlet'lerinin Get-Date
kaynağını bulmak için aşağıdaki komutu kullanın:
Get-Command Get-Date, Get-Help -All |
Select-Object -Property Name, CommandType, Module ,PSSnapIn
Aşağıdaki çıkışta Get-Help
cmdlet'in Microsoft.PowerShell.Core ek bileşeninde olduğu gösterilmektedir. Bu ek bileşen oturumdan kaldırılamaz.
Name CommandType Module PSSnapIn
---- ----------- ------ --------
Get-Date Function
Get-Date Cmdlet Microsoft.PowerShell.Utility
Get-Help Cmdlet Microsoft.PowerShell.Core
için Get-Date
iki kaynak vardır. Biri bir işlev, diğeri de Microsoft.PowerShell.Utility modülündeki bir cmdlet'idir . kullanarak Remove-Module
modülü kaldırabilirsiniz. İşlevi kaldırmak için sürücüden Function:
silebilirsiniz.
Remove-Item Function:Get-Date
Sürücü hakkında Function:
daha fazla bilgi için bkz . about_Function_Provider.
Ad çakışmalarını yönetme
Oturumdaki birden fazla komut aynı ada sahip olduğunda ad çakışmaları oluşur. Modüldeki komutlar oturumdaki komutlar veya öğelerle aynı adlara sahip olduğunda modülü içeri aktarmak ad çakışması oluşturur.
Import-Module
geçerli oturumdaki komutları gizleyen ve değiştiren komutlar ekleyebilir. Ad çakışmaları komutların gizlenmesini veya değiştirilmesini sağlayabilir. İçeri aktarılan modül, oturumdaki mevcut bir komutla aynı ada sahip bir komut içerdiğinde komut değiştirme gerçekleşir. Yeni içeri aktarılan komut, var olan komut yerine önceliklidir.
Örneğin, bir oturum aynı ada sahip bir işlev ve cmdlet içerdiğinde PowerShell işlevi varsayılan olarak çalıştırır. Oturumda aynı ada sahip aynı türde komutlar (aynı ada sahip iki cmdlet gibi) varsa, varsayılan olarak en son eklenen komutu çalıştırır.
Öncelik kurallarının açıklaması ve gizli komutları çalıştırma yönergeleri de dahil olmak üzere daha fazla bilgi için bkz . about_Command_Precedence.
Komut adını niteleyerek gizli veya değiştirilmiş bir komut çalıştırabilirsiniz. Komut adını nitelemek için, istediğiniz komutun sürümünü içeren modülün adını ekleyin. Örneğin:
Microsoft.PowerShell.Utility\Get-Date
Modül adı ön eki ile çalıştırmakGet-Date
, Microsoft.PowerShell.Utility modülünden sürümün çalıştırılmasını sağlar.
Ad çakışmalarını algılamak için cmdlet'in All parametresini Get-Command
kullanın. Varsayılan olarak, Get-Command
yalnızca komut adını yazdığınızda çalıştırılan komutları alır. All parametresi, oturumdaki belirli ada sahip tüm komutları alır.
Ad çakışmalarını önlemek için cmdlet'in Import-Module
NoClobber veya Prefix parametrelerini kullanın. Prefix parametresi, içeri aktarılan komutların adlarına oturumda benzersiz olmaları için bir ön ek ekler. NoClobber parametresi, oturumdaki mevcut komutları gizleyecek veya değiştirebilecek komutları içeri aktarmaz.
Yalnızca içeri aktarmak istediğiniz komutları seçmek için Diğer Ad, Cmdlet, İşlev ve Değişken parametrelerini Import-Module
kullanabilir ve oturumunuzda ad çakışmalarına neden olan komutları dışlayabilirsiniz.
Modül yazarları, tüm komut adlarına varsayılan bir ön ek eklemek için modül bildiriminin DefaultCommandPrefix özelliğini kullanarak ad çakışmalarını önleyebilir. Prefix parametresinin değeri DefaultCommandPrefix değerinden önceliklidir.
Ayrıca bkz.
PowerShell