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 bir betik dili ve komut kabuğudur. Dil, işlemenin yapısını ve mantığını sağlayan anahtar sözcüklerden ve işi gerçekleştiren komutlardan oluşur. PowerShell'deki komutlar betikler, işlevler veya cmdlet'ler olarak uygulanır.

Modül, cmdlet'ler, sağlayıcılar, işlevler, değişkenler ve tek bir birim olarak içeri aktarılabilen diğer kaynak türlerini içerebilen kendi içinde yeniden kullanılabilir bir birimdir.

PowerShell, temel bir modül kümesiyle birlikte gelir. Gerektiğinde daha fazla modül de yükleyebilirsiniz. Varsayılan olarak, bir modülden ilk kez komut kullandığınızda yüklü modüller otomatik olarak yüklenir. Modüllerin $PSModuleAutoloadingPreference otomatik yüklenmesini etkinleştirmek, devre dışı bırakmak ve yapılandırmak için değişkenini kullanın. Daha fazla bilgi için bkz . about_Preference_Variables.

Oturum sırasında yüklemesini kaldırabilir veya yeniden yükleyebilirsiniz. Remove-Module Bir modülü oturumunuzdan kaldırmak için cmdlet'ini kullanın. Import-Module Modülü yüklemek için cmdlet'ini kullanın.

Modüller C# dilinde yazılmış derlenmiş .NET derlemeleri veya PowerShell'de yazılmış betik tabanlı modüller olarak oluşturulabilir. 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.

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.

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. Microsoft.PowerShell.PSResourceGet , PowerShell için tercih edilen yeni paket yöneticisidir ve PowerShell'in önceki sürümlerine 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

Bir modülü içinde dosyaları olan bir klasör olarak alırsanız, PowerShell'de kullanabilmek için önce bu modülü bilgisayarınıza yüklemeniz gerekir.

PowerShell önceden yüklenmiş birkaç modülle birlikte gelir. Windows tabanlı bilgisayarlarda, birçok Windows özelliği özelliği yönetmek için modüller içerir. Özellik yüklendiğinde bu modüller yüklenir. Diğer modüller, modülü yükleyen bir yükleyici veya kurulum programında gelebilir.

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

Modül klasörünün tamamını yeni oluşturulan klasöre kopyalayın. PowerShell'de cmdlet'ini Copy-Item kullanın. Örneğin, aşağıdaki komutu çalıştırarak klasörü C:\PSTest yeni oluşturduğunuz klasöre kopyalayınMyModule:

Copy-Item -Path C:\PSTest\MyModule -Destination $folder

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. 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. Diğer konumlardaki modüller cmdlet'i kullanılarak Import-Module içeri aktarılmalıdır.

Modül otomatik yükleme, herhangi bir kurulum veya profil yapılandırması olmadan bir modüldeki komutları kullanmanıza olanak tanır. Modülleri bilgisayarınıza yükledikten sonra yönetmeniz gerekmez.

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
    

Cmdlet listesini, henüz oturumda olmasalar bile tüm yüklü modüllerdeki komutları kullanabilirsiniz Get-Command . 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.

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-ModuleGet-PSSessionConfiguration gerekebilir.

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.

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.

Modülün adını belirterek kendi modülünüzde $env:PSModulePath yüklü olan bir modülü içeri aktarabilirsiniz. Örneğin, aşağıdaki komut 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.

Yüklü modülleri bulma

cmdlet'i Get-Module , oturumunuzda içeri aktarılan 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 komutun yerine geçen 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 gizlenmiş 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 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.