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 lain yang dapat diimpor ke dalam sesi PowerShell atau program PowerShell kustom apa pun.
Sebelum fungsionalitas yang terkandung dalam modul dapat digunakan, modul harus dimuat ke dalam sesi PowerShell. 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 membongkar atau memuat ulang modul secara manual selama sesi PowerShell. Untuk membongkar modul, gunakan Remove-Module
cmdlet. Untuk memuat atau memuat ulang modul, gunakan Import-Module
.
PowerShell dilengkapi dengan serangkaian modul dasar. Siapa pun dapat membuat perintah PowerShell baru atau sumber daya lain, dan menerbitkannya sebagai modul yang dapat diinstal pengguna sesuai kebutuhan.
Anda dapat menulis modul di C# sebagai rakitan .NET yang dikompilasi, yang dikenal sebagai modul asli, atau di PowerShell biasa, yang dikenal sebagai modul skrip. Topik 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.
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 PowerShell 7.4 dan rilis yang lebih baru. Microsoft.PowerShell.PSResourceGet adalah manajer paket pilihan baru untuk PowerShell dan dapat diinstal pada versi PowerShell sebelumnya. 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
Jika Anda menerima modul sebagai folder dengan file di dalamnya, Anda perlu menginstalnya di komputer Anda sebelum Anda dapat menggunakannya di PowerShell.
PowerShell dilengkapi dengan beberapa modul yang telah diinstal sebelumnya. Pada komputer berbasis Windows, banyak fitur Windows menyertakan modul untuk mengelola fitur. Modul tersebut diinstal saat fitur diinstal. Modul lain mungkin datang dalam program penginstal atau penyiapan yang menginstal modul.
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\WindowsPowerShell\Modules
Salin seluruh folder modul ke folder baru yang dibuat. Di PowerShell gunakan Copy-Item
cmdlet . Misalnya, jalankan perintah berikut untuk menyalin MyModule
folder dari C:\PSTest
ke folder yang baru saja Anda buat:
Copy-Item -Path C:\PSTest\MyModule -Destination $folder
Anda dapat menginstal modul di lokasi mana pun, tetapi menginstal modul Anda di lokasi modul default membuatnya lebih mudah dikelola. 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. Modul di lokasi lain harus diimpor menggunakan Import-Module
cmdlet.
Pemuatan otomatis modul memungkinkan Anda menggunakan perintah dalam modul tanpa pengaturan atau konfigurasi profil apa pun. Anda tidak perlu mengelola modul setelah menginstalnya di komputer Anda.
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
Anda dapat menggunakan Get-Command
daftar cmdlet perintah di semua modul yang diinstal, meskipun belum ada dalam sesi. 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.
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.
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.
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.
Anda dapat mengimpor modul yang diinstal di Anda $env:PSModulePath
dengan menentukan nama modul. Misalnya, perintah 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.
Menemukan modul yang terinstal
Get-Module
Cmdlet mendapatkan modul PowerShell yang telah diimpor dalam sesi Anda.
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 menggantikan 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 yang telah disembunyikan atau diganti dengan memenuhi syarat nama perintah. Untuk memenuhi syarat nama perintah, tambahkan nama modul daripada 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.