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 $PSModuleAutoloadingPreferencekullanarak 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
  • 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

Varsayılan olarak, Modules geçerli kullanıcının klasörü yoktur. veya Install-PSResourcekullanarak 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-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
    

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:PSModulePatholmayan 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:PSModulePathbulunan yeni bir konuma kopyalayın.

PowerShell'de cmdlet'ini Copy-Item kullanın. Örneğin, klasöründen klasörü C:\PSTestkopyalamak 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:PSModulePathkonumundan değil, herhangi bir konumdan içeri aktarılan modülleri içerebilir.

içinde yüklü $env:PSModulePathmodü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:PSModulePathyü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-Dateiki kaynak vardır. Biri bir işlev, diğeri de Microsoft.PowerShell.Utility modülündeki bir cmdlet'idir . kullanarak Remove-Modulemodü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.