about_Modules
Kısa açıklama
PowerShell modüllerini yükleme, içeri aktarma ve kullanma işlemleri açıklanır.
Uzun açıklama
Modül, cmdlet'ler, sağlayıcılar, işlevler, iş akışları, değişkenler ve diğer adlar gibi PowerShell üyelerini içeren bir pakettir.
Komut yazan kişiler, komutlarını düzenlemek ve başkalarıyla paylaşmak için modülleri kullanabilir. Modülleri alan kişiler, modüllerdeki komutları PowerShell oturumlarına ekleyebilir ve yerleşik komutlar gibi kullanabilir.
Bu konuda PowerShell modüllerinin nasıl kullanılacağı açıklanmaktadır. PowerShell modülleri yazma hakkında bilgi için bkz. PowerShell Modülü Yazma.
Modül nedir?
Modül, cmdlet'ler, sağlayıcılar, işlevler, iş akışları, değişkenler ve diğer adlar gibi PowerShell üyelerini içeren bir pakettir. Bu paketin üyeleri bir PowerShell betiğinde, derlenmiş DLL'de veya her ikisinin birleşiminde uygulanabilir. Bu dosyalar genellikle tek bir dizinde birlikte gruplandırılır. Daha fazla bilgi için SDK belgelerindeki Windows PowerShell Modülünü Anlama bölümüne bakın.
Modül Otomatik Yükleme
PowerShell 3.0 sürümünden başlayarak, yüklü bir modülde herhangi bir komutu ilk kez çalıştırdığınızda PowerShell modülleri otomatik olarak içeri aktarır. Artık bir modüldeki komutları herhangi bir kurulum veya profil yapılandırması olmadan kullanabilirsiniz, bu nedenle modülleri bilgisayarınıza yükledikten sonra yönetmeniz gerekmez.
Modüldeki komutları bulmak da daha kolaydır. Get-Command
Cmdlet artık henüz oturumda olmasalar bile tüm yüklü modüllerdeki tüm komutları alır. Bir komutu bulabilir ve içeri aktarmadan önce modülü içeri aktarmanıza gerek kalmadan kullanabilirsiniz.
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
Get-Command
joker karakter (*
) içeren komutlar bulma amaçlı olarak kabul edilir, kullanılamaz ve hiçbir modülü içeri aktarmaz.
Yalnızca PSModulePath ortam değişkeni tarafından belirtilen konumda depolanan modüller otomatik olarak içeri aktarılır. Diğer konumlardaki modüller cmdlet'i çalıştırılarak Import-Module
içeri aktarılmalıdır.
Ayrıca, PowerShell sağlayıcılarını kullanan komutlar bir modülü otomatik olarak içeri aktarmaz. Örneğin, cmdlet'i gibi Get-PSSessionConfiguration
WSMan: sürücüsünü gerektiren 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
gerekebilir.
Yine de komutunu çalıştırarak Import-Module
modülü içeri aktarabilir ve modülün otomatik içeri aktarılmasını $PSModuleAutoloadingPreference
etkinleştirmek, devre dışı bırakmak ve yapılandırmak için değişkenini kullanabilirsiniz. Daha fazla bilgi için bkz. about_Preference_Variables.
Modül Kullanma
Bir modülü kullanmak için aşağıdaki görevleri gerçekleştirin:
- Modülü yükleyin. (Bu genellikle sizin için yapılır.)
- Modülün eklediği komutları bulun.
- Modülün eklediği komutları kullanın.
Bu konu başlığı altında, bu görevlerin nasıl gerçekleştireceğiniz açıklanır. Ayrıca modülleri yönetme hakkında diğer yararlı bilgileri de içerir.
Modül Yükleme
Bir modülü içinde dosyaları olan bir klasör olarak alırsanız, PowerShell'de kullanabilmek için önce bilgisayarınıza yüklemeniz gerekir.
Modüllerin çoğu sizin için yüklenir. PowerShell, bazen çekirdek modüller olarak da adlandırılan önceden yüklenmiş birkaç modülle birlikte gelir. Windows tabanlı bilgisayarlarda, işletim sistemine dahil edilen özellikleri yönetmek için cmdlet'ler varsa, bu modüller önceden yüklenmiştir. Örneğin, Sunucu Yöneticisi Rol ve Özellik Ekleme Sihirbazı'nı veya Denetim Masası'daki Windows özelliklerini aç veya kapat iletişim kutusunu kullanarak bir Windows özelliği yüklediğinizde, özelliğin parçası olan tüm PowerShell modülleri yüklenir. Diğer birçok modül, modülü yükleyen bir yükleyicide veya Kurulum programında gelir.
Geçerli kullanıcı için bir Modules dizini oluşturmak için aşağıdaki komutu kullanın:
New-Item -Type Directory -Path $HOME\Documents\PowerShell\Modules
Modül klasörünün tamamını Modules dizinine kopyalayın. Windows Gezgini ve Cmd.exe ile PowerShell dahil olmak üzere klasörü kopyalamak için herhangi bir yöntemi kullanabilirsiniz. PowerShell'de cmdlet'ini Copy-Item
kullanın. Örneğin, MyModule klasörünü modules dizinine C:\ps-test\MyModule
kopyalamak için şunu yazın:
Copy-Item -Path C:\ps-test\MyModule -Destination `
$HOME\Documents\PowerShell\Modules
Herhangi bir konuma modül yükleyebilirsiniz, ancak modüllerinizi varsayılan bir modül konumuna yüklemek, bunların yönetilmesini kolaylaştırır. Varsayılan modül konumları hakkında daha fazla bilgi için Modül ve DSC Kaynak Konumları ile PSModulePath bölümüne bakın.
Yüklü Modülleri Bulma
Varsayılan modül konumunda yüklü olan ancak henüz oturumunuza aktarılmayan modülleri bulmak için şunu yazın:
Get-Module -ListAvailable
Oturumunuza zaten aktarılmış modülleri bulmak için PowerShell istemine şunu yazın:
Get-Module
Cmdlet hakkında Get-Module
daha fazla bilgi için bkz. Get-Module.
Modüldeki Komutları Bulma
Get-Command
Kullanılabilir tüm komutları bulmak için cmdlet'ini kullanın. Komutlara modül, ad ve ada göre filtrelemek için cmdlet'in Get-Command
parametrelerini 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üldeki Komutlar için Yardım Alma
Modülde dışarı aktarıldığı komutlar için Yardım dosyaları varsa, Get-Help
cmdlet'i Yardım konularını görüntüler. PowerShell'deki Get-Help
herhangi bir komutla ilgili yardım almak için kullandığınız komut biçimini kullanın.
PowerShell 3.0'dan başlayarak, bir modül için Yardım dosyalarını indirebilir ve hiçbir zaman eskimemeleri için Yardım dosyalarına yönelik güncelleştirmeleri indirebilirsiniz.
Modüldeki komutlarla ilgili yardım almak için şunu yazın:
Get-Help <command-name>
Modüldeki komutla ilgili çevrimiçi yardım almak için şunu yazın:
Get-Help <command-name> -Online
Bir modüldeki komutların yardım dosyalarını indirmek ve yüklemek için şunu yazın:
Update-Help -Module <module-name>
Daha fazla bilgi için bkz. Get-Help ve Update-Help.
Modül İçeri Aktarma
Bir modülü veya modül dosyasını içeri aktarmanız gerekebilir. İçeri aktarma, bir modül PSModulePath ortam değişkeni $env:PSModulePath
tarafından belirtilen konumlara yüklenmediğinde veya modül bir klasör olarak teslim edilen tipik modül yerine .dll veya .psm1 dosyası gibi bir dosyadan oluştuğunda gereklidir.
Ayrıca, içeri aktarılan tüm komutların Import-Module
ad adlarına ayırt edici bir ön ek ek ekleyen Ön Ek parametresi veya modülün oturumdaki mevcut komutları gizleyecek veya değiştirebilecek komutlar eklemesini engelleyen NoClobber parametresi gibi komutun parametrelerini kullanabilmek için modülü içeri aktarmayı seçebilirsiniz.
Modülleri içeri aktarmak için cmdlet'ini Import-Module
kullanın.
PSModulePath konumundaki modülleri geçerli oturuma aktarmak için aşağıdaki komut biçimini kullanın.
Import-Module <module-name>
Örneğin, aşağıdaki komut BitsTransfer modülünü geçerli oturuma aktarır.
Import-Module BitsTransfer
Varsayılan modül konumunda olmayan bir modülü içeri aktarmak için komutundaki modül klasörünün tam yolunu kullanın.
Örneğin, dizinindeki 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 bulunmayan bir modül dosyasını içeri aktarmak için komutundaki modül dosyasının tam yolunu kullanın.
Örneğin, dizinindeki TestCmdlets.dll modülünü C:\ps-test
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.
Bir Modülü Her Oturuma aktarma
komutu modülleri Import-Module
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.
Modül Kaldırma
Bir modülü kaldırdığınızda, modülün eklediği komutlar oturumdan silinir.
Bir modülü oturumunuzdan kaldırmak için aşağıdaki komut biçimini kullanın.
Remove-Module <module-name>
Ö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ü kaldırmak modülü kaldırmaz. Daha fazla bilgi için bkz. Remove-Module.
Modül ve DSC Kaynak Konumları ve PSModulePath
Ortam $env:PSModulePath
değişkeni, modülleri ve kaynakları bulmak için aranan klasör konumlarının listesini içerir.
Varsayılan olarak, etkin konumlara atanmış $env:PSModulePath
olan konumlar şunlardır:
Sistem genelinde konumlar:
$PSHOME\Modules
Bu klasörler, Windows ve PowerShell ile birlikte gelen modülleri içerir.
PowerShell'e dahil edilen DSC kaynakları klasörde depolanır
$PSHOME\Modules\PSDesiredStateConfiguration\DSCResources
.Kullanıcıya özgü modüller: Bunlar, kullanıcının kapsamında kullanıcı tarafından yüklenen modüllerdir.
Install-Module
modülün geçerli kullanıcı için mi yoksa tüm kullanıcılar için mi yüklü olduğunu belirtmenize olanak tanıyan bir Scope parametresine sahiptir. Daha fazla bilgi için bkz . Install-Module.Windows'daki kullanıcıya özgü CurrentUser konumu, kullanıcı profilinizdeki Belgeler konumunda bulunan klasördür
PowerShell\Modules
. Bu konumun belirli yolu Windows sürümüne ve klasör yeniden yönlendirme kullanıp kullanmamanıza göre değişir. Microsoft OneDrive, Belgeler klasörünüzün konumunu da değiştirebilir.Varsayılan olarak, Windows 10 ve üzeri sürümlerde bu konum şeklindedir
$HOME\Documents\PowerShell\Modules
. Linux veya Mac'te CurrentUser konumu şeklindedir$HOME/.local/share/powershell/Modules
.Not
Aşağıdaki komutu kullanarak Belgeler klasörünüzün konumunu doğrulayabilirsiniz:
[Environment]::GetFolderPath('MyDocuments')
.AllUsers konumu Windows üzerindedir
$env:PROGRAMFILES\PowerShell\Modules
. Linux veya Mac'te modüller konumunda/usr/local/share/powershell/Modules
depolanır.
Not
Dizine dosya eklemek veya dosyaları değiştirmek için PowerShell'i $env:Windir\System32
Yönetici olarak çalıştır seçeneğiyle başlatın.
PSModulePath ortam değişkeninin $Env:PSModulePath
değerini değiştirerek sisteminizdeki varsayılan modül konumlarını değiştirebilirsiniz. PSModulePath ortam değişkeni Path ortam değişkeninde modellenmiştir ve aynı biçime sahiptir.
Varsayılan modül konumlarını görüntülemek için şunu yazın:
$Env:PSModulePath
Varsayılan modül konumu eklemek için aşağıdaki komut biçimini kullanın.
$Env:PSModulePath = $Env:PSModulePath + ";<path>"
Komuttaki noktalı virgül (;
), yeni yolu listede ondan önce gelen yoldan ayırır.
Örneğin, dizini eklemek C:\ps-test\Modules
için şunu yazın:
$Env:PSModulePath + ";C:\ps-test\Modules"
Linux veya MacOS'ta varsayılan bir modül konumu eklemek için aşağıdaki komut biçimini kullanın:
$Env:PSModulePath += ":<path>"
Örneğin, dizini PSModulePath ortam değişkeninin değerine eklemek /usr/local/Fabrikam/Modules
için şunu yazın:
$Env:PSModulePath += ":/usr/local/Fabrikam/Modules"
Linux veya MacOS'ta, komuttaki iki nokta üst üste (:
), yeni yolu listede ondan önceki yoldan ayırır.
PSModulePath'eGet-Module
bir yol eklediğinizde ve Import-Module
komutlar bu yola modüller eklediğinde.
Ayarladığınız değer yalnızca geçerli oturumu etkiler. Değişikliği kalıcı hale getirmek için komutunu PowerShell profilinize ekleyin veya kayıt defterindeki PSModulePath ortam değişkeninin değerini değiştirmek için Denetim Masası'de System komutunu kullanın.
Ayrıca, değişikliği kalıcı hale getirmek için System.Environment sınıfının SetEnvironmentVariable yöntemini kullanarak PSModulePath ortam değişkenine yol ekleyebilirsiniz.
PSModulePath değişkeni hakkında daha fazla bilgi için bkz. about_Environment_Variables.
Modüller ve Ad Çakışmaları
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şmasına neden olur.
Ad çakışmaları komutların gizlenmesini veya değiştirilmesini sağlayabilir.
Gizli
Komut, komut adını yazdığınızda çalıştırılan komut olmadığında gizlenir, ancak komut adını modülün adıyla veya kaynaklandığı ek bileşenle niteleyerek başka bir yöntem kullanarak çalıştırabilirsiniz.
Değiştirilir
Komut, aynı ada sahip bir komut tarafından üzerine yazıldığından çalıştıramadığınızda değiştirilir. Çakışmaya neden olan modülü kaldırsanız bile, oturumu yeniden başlatmadığınız sürece değiştirilen bir komutu çalıştıramazsınız.
Import-Module
geçerli oturumdaki komutları gizleyen ve değiştiren komutlar ekleyebilir. Ayrıca, oturumunuzda bulunan komutlar modülün eklediği komutları gizleyebilir.
Ad çakışmalarını algılamak için cmdlet'in All parametresini Get-Command
kullanın. PowerShell 3.0'da başlayarak, Get-Command
yalnızca komut adını yazdığınızda çalışan 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 hiçbir komutu 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ı hariç tutabilirsiniz.
Modül yazarları, tüm komut adlarına varsayılan ön ek eklemek için modül bildiriminin DefaultCommandPrefix özelliğini kullanarak ad çakışmalarını engelleyebilir. Prefix parametresinin değeri DefaultCommandPrefix değerinden önceliklidir.
Bir komut gizli olsa bile, komut adını kaynağı olan modülün veya ek bileşenin adıyla niteleyerek çalıştırabilirsiniz.
Oturumda aynı ada sahip komutlar bulunduğunda hangi komutun çalıştırıldığı PowerShell komut öncelik kuralları tarafından belirlenir.
Örneğin, oturum aynı ada sahip bir işlev ve cmdlet içerdiğinde PowerShell işlevi varsayılan olarak çalıştırır. Oturum aynı ada sahip aynı türde komutlar (aynı ada sahip iki cmdlet gibi) içerdiğinde, 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.
Modüller ve Ek Bileşenler
Modüllerden ve ek bileşenlerden oturumunuza komutlar ekleyebilirsiniz. Modüller cmdlet'ler, sağlayıcılar, işlevler ve değişkenler, diğer adlar ve PowerShell sürücüleri gibi öğeler de 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ü veya ek bileşeni oturumunuzdan kaldırmadan önce, hangi komutların kaldırılacağını belirlemek için aşağıdaki komutları kullanın.
Oturumunuzda bir cmdlet'in kaynağını bulmak için aşağıdaki komut biçimini kullanın:
Get-Command <cmdlet-name> | Format-List -Property verb,noun,pssnapin,module
Örneğin, cmdlet'in Get-Date
kaynağını bulmak için şunu yazın:
Get-Command Get-Date | Format-List -Property verb,noun,module
Modülle İlgili Uyarılar ve Hatalar
Bir modülün dışarı aktardığını komutlar PowerShell komut adlandırma kurallarına uymalıdır. İçeri aktardığınız modül, adlarında onaylanmamış fiiller bulunan cmdlet'leri veya işlevleri dışarı aktarırsa, Import-Module
cmdlet aşağıdaki uyarı iletisini görüntüler.
UYARI: İçeri aktarılan bazı komut adları, onaylanmamış fiiller içerir ve bu da onları daha az bulunabilir hale getirir. Onaylanan fiillerin listesini görmek için ayrıntılı parametresini kullanın veya Get-Verb yazın.
Bu ileti yalnızca bir uyarıdır. Uyumlu olmayan komutlar da dahil olmak üzere modülün tamamı yine içeri aktarılır. İleti modül kullanıcılarına görüntülense de, adlandırma sorunu modül yazarı tarafından düzeltilmelidir.
Uyarı iletisini engellemek için cmdlet'in DisableNameChecking parametresini Import-Module
kullanın.
Yerleşik Modüller ve Ek Bileşenler
PowerShell 2.0'da ve PowerShell 3.0 ve sonraki sürümlerdeki eski stil konak programlarında, PowerShell ile yüklenen temel komutlar her PowerShell oturumuna otomatik olarak eklenen ek bileşenler halinde paketlenir.
PowerShell 3.0'da başlayarak, ilk oturum durumu API'sini InitialSessionState.CreateDefault2
uygulayan konak programları için Microsoft.PowerShell.Core ek bileşeni varsayılan olarak her oturuma eklenir. Modüller ilk kullanımda otomatik olarak yüklenir.
Not
Cmdlet kullanılarak New-PSSession
başlatılan oturumlar da dahil olmak üzere uzak oturumlar, yerleşik komutların ek bileşenlerde paketlendiği eski stildeki oturumlardır.
Aşağıdaki modüller (veya ek bileşenler) PowerShell ile birlikte yüklenir.
- CimCmdlet'ler
- Microsoft.PowerShell.Archive
- Microsoft.PowerShell.Core
- Microsoft.PowerShell.Diagnostics
- Microsoft.PowerShell.Host
- Microsoft.PowerShell.Management
- Microsoft.PowerShell.Security
- Microsoft.PowerShell.Utility
- Microsoft.WSMan.Management
- PackageManagement
- PowerShellGet
- PSDesiredStateConfiguration
- PSDiagnostics
- PSReadline
Modül Olaylarını Günlüğe Kaydetme
PowerShell 3.0'dan başlayarak, modüllerin ve ek bileşenlerinin LogPipelineExecutionDetails özelliğini olarak ayarlayarak PowerShell modülleri ve ek bileşenlerindeki cmdlet'ler ve işlevler için yürütme olaylarını $True
kaydedebilirsiniz.
Tüm PowerShell oturumlarında modül günlüğünü etkinleştirmek için Modül Günlüğünü Aç grup ilkesi ayarını da kullanabilirsiniz. Daha fazla bilgi için günlüğe kaydetme ve grup ilkesi makalelerine bakın.