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, bir PowerShell oturumuna veya herhangi bir özel PowerShell programına aktarılabilen cmdlet'ler, sağlayıcılar, işlevler, değişkenler ve diğer kaynakları içerebilen kendi içinde, yeniden kullanılabilir bir birimdir.
Modülde yer alan işlevler kullanılabilir duruma gelmeden önce modülün PowerShell oturumuna yüklenmesi gerekir. 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 $PSModuleAutoloadingPreference
kullanarak 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 kaldırabilir veya yeniden yükleyebilirsiniz. Modülü kaldırmak için cmdlet'ini Remove-Module
kullanın. Bir modülü yüklemek veya yeniden yüklemek için kullanın Import-Module
.
PowerShell, temel bir modül kümesiyle birlikte gelir. Herkes yeni PowerShell komutları veya diğer kaynaklar oluşturabilir ve bunları gerektiğinde kullanıcıların yükleyebileceği modüller olarak yayımlayabilir.
Modülleri C# dilinde yerel modüller olarak bilinen derlenmiş .NET derlemeleri olarak veya betik modülleri olarak bilinen düz PowerShell'de yazabilirsiniz. Bu konuda 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.
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-PSResource
kullanarak 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\WindowsPowerShell\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-CimInstance
CimCmdlets 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-Module
Get-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:PSModulePath
olmayan 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:PSModulePath
konumundan değil, herhangi bir konumdan içeri aktarılan modülleri içerebilir.
içinde yüklü $env:PSModulePath
modü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:PSModulePath
yü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-Date
iki kaynak vardır. Biri bir işlev, diğeri de Microsoft.PowerShell.Utility modülündeki bir cmdlet'idir . kullanarak Remove-Module
modü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.
PowerShell