Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
- Tüm kullanıcıların kapsamı -
- 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
- Tüm kullanıcıların kapsamı -
Varsayılan olarak, Modules geçerli kullanıcının klasörü yoktur. veya CurrentUserkullanarak Install-Module kapsamda bir modül Install-PSResource 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 CimCmdletsGet-CimInstance.
Komutu Çalıştırma
Get-CimInstance Win32_OperatingSystemKomutu Alma
Get-Command Get-CimInstanceKomut için Yardım Alma
Get-Help Get-CimInstance
Joker karakterGet-Command () ile kullandığınızda * 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.ManagementGet-PSSessionConfigurationiçin cmdlet'ini Import-Module çalıştırmanız WSMan: 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ü MyModulekopyalamak C:\PSTest 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-Date cmdlet'lerinin Get-Help 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 NoClobber veya Import-Module 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 Adve 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 bakınız
PowerShell