Modüller Hakkında

Kısa Açıklama

PowerShell modüllerini yüklemeyi, içeri aktarmayı ve kullanmayı açıklar.

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 komutlarını 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 bir komut paketidir. Oturumunuzun tüm cmdlet'leri ve sağlayıcıları bir modül veya ek bileşen tarafından eklenir.

Modül Otomatik Yükleme

PowerShell 3.0'da başlayarak PowerShell, yüklü bir modülde herhangi bir komutu ilk kez çalıştırdığınızda 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, böylece bir komut bulabilir ve içeri aktarmadan 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ılmaz 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üllerin cmdlet'i çalıştırılarak Import-Module içeri aktarılması gerekir.

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.

Modülü içeri aktarmak için komutunu çalıştırmaya ve modüllerin Import-Module$PSModuleAutoloadingPreference otomatik içeri aktarılmasını etkinleştirmek, devre dışı bırakmak ve yapılandırmak için değişkenini kullanmaya devam edebilirsiniz. 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ştirilecekleri açıklanmaktadı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 modülü bilgisayarınıza yüklemeniz gerekir.

Modüllerin çoğu sizin için yüklenir. PowerShell, bazen çekirdek modüller olarak adlandırılan önceden yüklenmiş birkaç modülle birlikte gelir. Windows tabanlı bilgisayarlarda, işletim sistemine dahil edilen özelliklerin bunları yönetmek için cmdlet'leri 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ükleyici 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 ve 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 modül konumuna yüklemek onları yönetmeyi 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. Modül, ad ve isim 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üldeki Komutlar için Yardım Alma

Modül dışarı aktarıldığı komutlar için Yardım dosyaları içeriyorsa, 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'da başlayarak, bir modül için Yardım dosyalarını indirebilir ve hiçbir zaman eskimemeleri için Yardım dosyalarına 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. 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 içeri aktarma gereklidir.

Ayrıca bir modülü içeri aktararak komutun tüm içeri aktarılan komutların Import-Module isim adlarına ayırt edici bir ön ek ek ekleyen Prefix parametresi veya modülün oturumdaki mevcut komutları gizleyecek veya değiştirebilecek komutlar eklemesini engelleyen NoClobber parametresi gibi parametrelerini kullanabilirsiniz.

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 C:\ps-test TestCmdlets modülünü 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. Bir 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, atanan $env:PSModulePath geçerli 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ükleneceğini belirtmenize olanak tanıyan bir Kapsam 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 kullanmadığınıza göre değişir. Microsoft OneDrive, Belgeler klasörünüzün konumunu da değiştirebilir.

    Varsayılan olarak, Windows 10 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 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 kendisinden ö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 kendisinden önceki yoldan ayırır.

PSModulePath'eGet-Module bir yol eklediğinizde ve Import-Module komutlar bu yola modüller eklediğinizde.

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 bir 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ün içeri aktarılması ad çakışmasına neden olur.

Ad çakışmaları komutların gizlenerek veya değiştirilebileceğine neden olabilir.

Gizli

Komut, komut adını yazdığınızda çalıştırılan komut olmadığında gizlenir, ancak komut adını modül adıyla veya kaynaklandığı ek bileşenle niteleyerek başka bir yöntem kullanarak çalıştırabilirsiniz.

Değiştirilir

Aynı ada sahip bir komut tarafından üzerine yazıldığı için çalıştıramadığınız bir komut 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ı dışlayabilirsiniz.

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ı önleyebilir. 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.

PowerShell komut öncelik kuralları, oturum aynı ada sahip komutlar içerdiğinde hangi komutun çalıştırileceğini belirler.

Ö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 içerdiğinde (aynı ada sahip iki cmdlet gibi), 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 komut ekleyebilirsiniz. Modüller cmdlet'ler, sağlayıcılar ve işlevler dahil olmak üzere tüm komut türlerini ve değişkenler, diğer adlar ve PowerShell sürücüleri gibi öğeleri 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 daha ayrıntılı bilgi için Verbose 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şenler halinde paketlendiği eski stildeki oturumlardır.

Aşağıdaki modüller (veya ek bileşenler) PowerShell ile birlikte yüklenir.

  • CimCmdlets
  • 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ç adlı grup ilkesi ayarını da kullanabilirsiniz. Daha fazla bilgi için günlüğe kaydetme ve grup ilkesi makalelerine bakın.

Ayrıca Bkz.

about_Logging_Windows

about_Logging_Non-Windows

about_Group_Policy_Settings

about_Command_Precedence

about_Group_Policy_Settings

Get-Command

Get-Help

Get-Module

Import-Module

Remove-Module