about_Modules
Deskripsi singkat
Menjelaskan cara menginstal, mengimpor, dan menggunakan modul PowerShell.
Deskripsi panjang
PowerShell adalah shell perintah dan bahasa skrip. Perintah di PowerShell diimplementasikan sebagai skrip, fungsi, atau cmdlet. Bahasa ini mencakup kata kunci, yang menyediakan struktur dan logika pemrosesan, dan sumber daya lainnya, seperti variabel, penyedia, alias.
Modul adalah unit mandiri yang dapat digunakan kembali yang dapat mencakup cmdlet, penyedia, fungsi, variabel, dan sumber daya lainnya. Secara default, PowerShell secara otomatis memuat modul yang diinstal saat pertama kali Anda menggunakan perintah dari modul. Anda dapat mengonfigurasi perilaku pemuatan modul otomatis menggunakan variabel $PSModuleAutoloadingPreference
. Untuk informasi selengkapnya, lihat about_Preference_Variables.
Anda juga dapat memuat atau membongkar modul secara manual selama sesi PowerShell. Untuk memuat atau memuat ulang modul, gunakan Import-Module
. Untuk membongkar modul, gunakan Remove-Module
cmdlet.
PowerShell menyertakan serangkaian modul dasar. Siapa pun dapat membuat modul baru menggunakan C# atau bahasa skrip PowerShell itu sendiri. Modul yang ditulis dalam C# sebagai rakitan .NET yang dikompilasi dikenal sebagai modul asli. Modul yang ditulis dalam PowerShell dikenal sebagai modul skrip.
Artikel ini menjelaskan cara menggunakan modul PowerShell. Untuk informasi tentang cara membuat modul PowerShell, lihat Menulis Modul PowerShell.
Catatan
Sebelum PowerShell 3.0, cmdlet dan penyedia dimas dalam snap-in PowerShell. Dimulai di PowerShell 3.0, snap-in Microsoft.PowerShell.Core ditambahkan ke setiap sesi secara default. Ini adalah satu-satunya snap-in yang tersisa di PowerShell. Semua snap-in lainnya dikonversi ke modul. Pembuatan snap-in baru tidak lagi didukung.
Lokasi modul default
PowerShell menyimpan modul di lokasi default berikut:
- Pada Windows
- Cakupan semua pengguna -
$env:ProgramFiles\PowerShell\Modules
- Cakupan pengguna saat ini -
$HOME\Documents\PowerShell\Modules
- Modul yang dikirim dengan PowerShell -
$PSHOME\Modules
- Cakupan semua pengguna -
- Di Linux dan macOS
- Cakupan semua pengguna -
/usr/local/share/powershell/Modules
- Cakupan pengguna saat ini -
$HOME/.local/share/powershell/Modules
- Modul yang dikirim dengan PowerShell -
$PSHOME/Modules
- Cakupan semua pengguna -
Secara default, Modules
folder untuk pengguna saat ini tidak ada. Jika Anda menginstal modul dalam CurrentUser
cakupan menggunakan Install-Module
atau Install-PSResource
, cmdlet tersebut Modules
membuat folder untuk pengguna saat ini. Jika folder tidak ada, Anda dapat membuatnya secara manual.
Gunakan perintah berikut untuk membuat Modules
folder untuk pengguna saat ini:
$folder = New-Item -Type Directory -Path $HOME\Documents\PowerShell\Modules
Lokasi ini secara otomatis disertakan $env:PSModulePath
dalam variabel lingkungan. Untuk informasi selengkapnya tentang lokasi modul default, lihat about_PSModulePath.
Pengisian otomatis modul
Pertama kali Anda menjalankan perintah dari modul yang diinstal, PowerShell secara otomatis mengimpor (memuat) modul tersebut. Modul harus disimpan di lokasi yang ditentukan dalam $env:PSModulePath
variabel lingkungan.
Pemuatan otomatis modul memungkinkan Anda menggunakan perintah dalam modul tanpa pengaturan atau konfigurasi profil apa pun. Masing-masing contoh berikut menyebabkan modul CimCmdlets , yang berisi Get-CimInstance
, untuk diimpor ke sesi Anda.
Jalankan Perintah
Get-CimInstance Win32_OperatingSystem
Dapatkan Perintah
Get-Command Get-CimInstance
Dapatkan Bantuan untuk Perintah
Get-Help Get-CimInstance
Saat Anda menggunakan Get-Command
dengan karakter kartubebas (*
), PowerShell tidak mengimpor modul apa pun. Anda dapat menggunakan kartubebas untuk penemuan perintah tanpa memuat modul yang mungkin tidak Anda butuhkan dalam sesi Anda.
Mengimpor modul secara manual
Mengimpor modul secara manual diperlukan saat modul tidak diinstal di lokasi yang ditentukan oleh $env:PSModulePath
variabel lingkungan, atau ketika modul disediakan sebagai mandiri .dll
atau .psm1
file, bukan modul yang dipaketkan.
Selain itu, perintah yang menggunakan penyedia PowerShell tidak secara otomatis mengimpor modul. Misalnya, jika Anda menggunakan perintah yang memerlukan WSMan:
drive, seperti Get-PSSessionConfiguration
cmdlet, Anda mungkin perlu menjalankan Import-Module
cmdlet untuk mengimpor modul Microsoft.WSMan.Management yang menyertakan WSMan:
drive.
Anda mungkin juga ingin mengubah cara modul diimpor dalam sesi Anda. Misalnya, parameter Awalan menambahkan awalan Import-Module
yang khas ke bagian kata benda cmdlet yang diimpor dari modul. Parameter NoClobber mencegah modul menambahkan perintah yang akan menyembunyikan atau mengganti perintah yang ada dalam sesi. Untuk informasi selengkapnya, lihat Mengelola konflik nama.
Contoh berikut mengimpor modul BitsTransfer ke dalam sesi saat ini.
Import-Module BitsTransfer
Untuk mengimpor modul yang tidak ada di Anda $env:PSModulePath
, gunakan jalur yang sepenuhnya memenuhi syarat ke folder modul. Misalnya, untuk menambahkan modul TestCmdlets di direktori ke C:\ps-test
sesi Anda, ketik:
Import-Module C:\ps-test\TestCmdlets
Untuk mengimpor file modul yang tidak terkandung dalam folder modul, gunakan jalur yang sepenuhnya memenuhi syarat ke file modul dalam perintah. Misalnya, untuk menambahkan modul TestCmdlets.dll di direktori ke C:\ps-test
sesi Anda, ketik:
Import-Module C:\ps-test\TestCmdlets.dll
Untuk informasi selengkapnya tentang menambahkan modul ke sesi Anda, lihat Import-Module.
Mengimpor modul di awal setiap sesi
Perintah Import-Module
mengimpor modul ke sesi PowerShell Anda saat ini. Untuk mengimpor modul ke setiap sesi PowerShell yang Anda mulai, tambahkan perintah ke Import-Module
profil PowerShell Anda.
Untuk informasi selengkapnya tentang profil, lihat about_Profiles.
Menginstal modul yang diterbitkan
Modul yang diterbitkan adalah modul yang tersedia dari repositori terdaftar, seperti Galeri PowerShell. Modul PowerShellGet dan Microsoft.PowerShell.PSResourceGet menyediakan cmdlet untuk menemukan, menginstal, dan menerbitkan modul PowerShell ke repositori terdaftar.
Modul PowerShellGet disertakan dengan PowerShell 5.0 dan rilis yang lebih baru. Modul Microsoft.PowerShell.PSResourceGet disertakan dengan rilis PowerShell 7.4 dan yang lebih baru dan merupakan manajer paket pilihan untuk PowerShell. Microsoft.PowerShell.PSResourceGet dapat diinstal, berdampingan dengan PowerShellGet, pada versi PowerShell yang lebih lama. Install-Module
Gunakan cmdlet atau Install-PSResource
untuk menginstal modul dari Galeri PowerShell.
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
Untuk informasi selengkapnya, lihat Gambaran Umum PowerShellGet.
Menginstal modul secara manual
Anda dapat menginstal modul secara manual dengan menyalin konten modul dari folder lain. Folder tersebut dapat berada di lokasi lain pada komputer lokal atau diinstal pada komputer lain. Untuk menginstal modul secara manual, salin seluruh folder modul ke lokasi baru yang disertakan dalam .$env:PSModulePath
Di PowerShell gunakan Copy-Item
cmdlet . Misalnya, jalankan perintah berikut untuk menyalin MyModule
folder dari C:\PSTest
:
$modulePath = $HOME\Documents\PowerShell\Modules\MyModule
Copy-Item -Path C:\PSTest\MyModule\* -Destination $modulePath -Recurse
Anda dapat menginstal modul di lokasi mana pun, tetapi menginstal modul Anda di lokasi modul default membuatnya lebih mudah dikelola.
Menemukan modul yang terinstal
Get-Module
Cmdlet mendapatkan modul PowerShell yang dimuat dalam sesi PowerShell saat ini.
Get-Module
Modul yang tercantum dapat mencakup modul yang diimpor dari lokasi mana pun, bukan hanya dari $env:PSModulePath
.
Gunakan perintah berikut untuk mencantumkan modul yang diinstal di $env:PSModulePath
:
Get-Module -ListAvailable
Perintah ini mendapatkan semua modul yang diinstal di $env:PSModulePath
, bukan hanya modul yang diimpor ke sesi saat ini. Perintah ini tidak mencantumkan modul yang diinstal di lokasi lain.
Untuk informasi selengkapnya, lihat Get-Module.
Mencantumkan perintah dalam modul
Get-Command
Gunakan cmdlet untuk menemukan semua perintah yang tersedia. Anda dapat menggunakan parameter Get-Command
cmdlet untuk memfilter perintah seperti berdasarkan modul, nama, dan kata benda.
Untuk menemukan semua perintah dalam modul, ketik:
Get-Command -Module <module-name>
Misalnya, untuk menemukan perintah dalam modul BitsTransfer , ketik:
Get-Command -Module BitsTransfer
Untuk informasi selengkapnya tentang Get-Command
cmdlet, lihat Get-Command.
Menghapus modul
Saat Anda menghapus modul, perintah yang ditambahkan modul akan dihapus dari sesi. Misalnya, perintah berikut menghapus modul BitsTransfer dari sesi saat ini.
Remove-Module BitsTransfer
Menghapus modul membalikkan operasi impor modul. Menghapus modul tidak menghapus instalan modul. Untuk informasi selengkapnya, lihat Remove-Module.
Perintah dapat ditambahkan ke sesi Anda dari modul dan snap-in. Modul dapat menambahkan semua jenis perintah, termasuk cmdlet, penyedia, dan fungsi, dan item, seperti variabel, alias, dan drive PowerShell. Snap-in hanya dapat menambahkan cmdlet dan penyedia.
Sebelum menghapus modul dari sesi Anda, gunakan perintah berikut untuk menentukan modul mana yang ingin Anda hapus.
Misalnya, gunakan perintah berikut untuk menemukan sumber Get-Date
cmdlet dan Get-Help
:
Get-Command Get-Date, Get-Help -All |
Select-Object -Property Name, CommandType, Module ,PSSnapIn
Output berikut menunjukkan bahwa Get-Help
cmdlet berada di snap-in Microsoft.PowerShell.Core . Snap-in ini tidak dapat dihapus dari sesi.
Name CommandType Module PSSnapIn
---- ----------- ------ --------
Get-Date Function
Get-Date Cmdlet Microsoft.PowerShell.Utility
Get-Help Cmdlet Microsoft.PowerShell.Core
Ada dua sumber untuk Get-Date
. Salah satunya adalah fungsi dan yang lainnya adalah cmdlet dalam modul Microsoft.PowerShell.Utility . Anda dapat menghapus modul menggunakan Remove-Module
. Untuk menghapus fungsi, Anda dapat menghapusnya dari Function:
drive.
Remove-Item Function:Get-Date
Untuk informasi selengkapnya tentang Function:
drive, lihat about_Function_Provider.
Mengelola konflik nama
Konflik nama terjadi ketika lebih dari satu perintah dalam sesi memiliki nama yang sama. Mengimpor modul menyebabkan konflik nama ketika perintah dalam modul memiliki nama yang sama dengan perintah atau item dalam sesi.
Import-Module
mungkin menambahkan perintah yang menyembunyikan dan mengganti perintah dalam sesi saat ini. Konflik nama dapat mengakibatkan perintah disembunyikan atau diganti. Penggantian perintah terjadi ketika modul yang diimpor berisi perintah dengan nama yang sama dengan perintah yang ada dalam sesi. Perintah yang baru diimpor lebih diutamakan daripada perintah yang ada.
Misalnya, ketika sesi menyertakan fungsi dan cmdlet dengan nama yang sama, PowerShell menjalankan fungsi secara default. Ketika sesi menyertakan perintah dengan jenis yang sama dengan nama yang sama, seperti dua cmdlet dengan nama yang sama, secara default, sesi menjalankan perintah yang terakhir ditambahkan.
Untuk informasi selengkapnya, termasuk penjelasan tentang aturan dan instruksi prioritas untuk menjalankan perintah tersembunyi, lihat about_Command_Precedence.
Anda dapat menjalankan perintah tersembunyi atau diganti dengan memenuhi syarat nama perintah. Untuk memenuhi syarat nama perintah, tambahkan nama modul yang berisi versi perintah yang Anda inginkan. Contohnya:
Microsoft.PowerShell.Utility\Get-Date
Berjalan Get-Date
dengan awalan nama modul memastikan bahwa menjalankan versi dari modul Microsoft.PowerShell.Utility .
Untuk mendeteksi konflik nama, gunakan parameter Get-Command
Semua cmdlet. Secara default, Get-Command
hanya mendapatkan perintah yang berjalan saat Anda mengetikkan nama perintah. Parameter Semua mendapatkan semua perintah dengan nama tertentu dalam sesi.
Untuk mencegah konflik nama, gunakan parameter NoClobber atau Prefix cmdlet Import-Module
. Parameter Awalan menambahkan awalan ke nama perintah yang diimpor sehingga unik dalam sesi. Parameter NoClobber tidak mengimpor perintah apa pun yang akan menyembunyikan atau mengganti perintah yang ada dalam sesi.
Anda juga dapat menggunakan parameter Alias, Cmdlet, Function, dan Variable untuk memilih hanya perintah yang ingin Anda impor, dan Anda dapat mengecualikan perintah yang menyebabkan konflik nama dalam sesi Import-Module
Anda.
Penulis modul dapat mencegah konflik nama dengan menggunakan properti DefaultCommandPrefix dari manifes modul untuk menambahkan awalan default ke semua nama perintah. Nilai parameter Awalan lebih diutamakan daripada nilai DefaultCommandPrefix.