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-CimInstanceCimCmdlets 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:

  1. Modülü yükleyin. (Bu genellikle sizin için yapılır.)
  2. Modülün eklediği komutları bulun.
  3. 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:PSModulePathtarafı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ürPowerShell\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/Modulesdepolanır.

Not

Dizine dosya eklemek veya dosyaları değiştirmek için PowerShell'i $env:Windir\System32Yönetici olarak çalıştır seçeneğiyle başlatın.

PSModulePath ortam değişkeninin $Env:PSModulePathdeğ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-ModuleNoClobber 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

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ı $Truekaydedebilirsiniz. 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.

Ayrıca bkz.