about_Modules
Deskripsi singkat
Menjelaskan cara menginstal, mengimpor, dan menggunakan modul PowerShell.
Deskripsi panjang
Modul adalah paket yang berisi anggota PowerShell, seperti cmdlet, penyedia, fungsi, alur kerja, variabel, dan alias.
Orang siapa yang menulis perintah dapat menggunakan modul untuk mengatur perintah mereka dan membagikannya dengan orang lain. Orang yang menerima modul dapat menambahkan perintah dalam modul ke sesi PowerShell mereka dan menggunakannya seperti perintah bawaan.
Topik ini menjelaskan cara menggunakan modul PowerShell. Untuk informasi tentang cara menulis modul PowerShell, lihat Menulis Modul PowerShell.
Apa itu Modul?
Modul adalah paket yang berisi anggota PowerShell, seperti cmdlet, penyedia, fungsi, alur kerja, variabel, dan alias. Anggota paket ini dapat diimplementasikan dalam skrip PowerShell, DLL yang dikompilasi, atau kombinasi keduanya. File-file ini biasanya dikelompokkan bersama dalam satu direktori. Untuk informasi selengkapnya, lihat Memahami Modul Windows PowerShell dalam dokumentasi SDK.
Pemuatan Otomatis Modul
Dimulai di PowerShell 3.0, PowerShell mengimpor modul secara otomatis saat pertama kali Anda menjalankan perintah apa pun dalam modul yang diinstal. Anda sekarang dapat menggunakan perintah dalam modul tanpa pengaturan atau konfigurasi profil apa pun, sehingga tidak perlu mengelola modul setelah Anda menginstalnya di komputer Anda.
Perintah dalam modul juga lebih mudah ditemukan. Get-Command
Cmdlet sekarang mendapatkan semua perintah di semua modul yang diinstal, bahkan jika belum ada dalam sesi. Anda dapat menemukan perintah dan menggunakannya tanpa mengimpor perlu mengimpor modul terlebih dahulu.
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
Get-Command
perintah yang menyertakan karakter kartubebas (*
) dianggap untuk penemuan, tidak digunakan, dan tidak mengimpor modul apa pun.
Hanya modul yang disimpan di lokasi yang ditentukan oleh variabel lingkungan PSModulePath yang diimpor secara otomatis. Modul di lokasi lain harus diimpor dengan menjalankan Import-Module
cmdlet .
Selain itu, perintah yang menggunakan penyedia PowerShell tidak secara otomatis mengimpor modul. Misalnya, jika Anda menggunakan perintah yang memerlukan drive WSMan: , seperti Get-PSSessionConfiguration
cmdlet , Anda mungkin perlu menjalankan Import-Module
cmdlet untuk mengimpor modul Microsoft.WSMan.Management yang menyertakan WSMan:
drive.
Anda masih dapat menjalankan Import-Module
perintah untuk mengimpor modul dan menggunakan $PSModuleAutoloadingPreference
variabel untuk mengaktifkan, menonaktifkan, dan mengonfigurasi impor modul otomatis. Untuk informasi selengkapnya, lihat about_Preference_Variables.
Cara Menggunakan Modul
Untuk menggunakan modul, lakukan tugas berikut:
- Instal modul. (Ini sering dilakukan untuk Anda.)
- Temukan perintah yang ditambahkan modul.
- Gunakan perintah yang ditambahkan modul.
Topik ini menjelaskan cara melakukan tugas-tugas ini. Ini juga mencakup informasi berguna lainnya tentang mengelola modul.
Cara Menginstal Modul
Jika Anda menerima modul sebagai folder dengan file di dalamnya, Anda perlu menginstalnya di komputer sebelum Anda dapat menggunakannya di PowerShell.
Sebagian besar modul diinstal untuk Anda. PowerShell dilengkapi dengan beberapa modul yang telah diinstal sebelumnya, kadang-kadang disebut modul inti . Pada komputer berbasis Windows, jika fitur yang disertakan dengan sistem operasi memiliki cmdlet untuk mengelolanya, modul tersebut telah diinstal sebelumnya. Saat Anda menginstal fitur Windows, dengan menggunakan, misalnya, Wizard Tambahkan Peran dan Fitur di Manajer Server, atau kotak dialog Aktifkan atau nonaktifkan fitur Windows di Panel Kontrol, modul PowerShell apa pun yang merupakan bagian dari fitur diinstal. Banyak modul lain datang dalam program penginstal atau Penyiapan yang menginstal modul.
Gunakan perintah berikut untuk membuat direktori Modul untuk pengguna saat ini:
New-Item -Type Directory -Path $HOME\Documents\PowerShell\Modules
Salin seluruh folder modul ke direktori Modul. Anda dapat menggunakan metode apa pun untuk menyalin folder, termasuk Windows Explorer dan Cmd.exe, serta PowerShell. Di PowerShell gunakan Copy-Item
cmdlet . Misalnya, untuk menyalin folder MyModule dari C:\ps-test\MyModule
ke direktori Modul, ketik:
Copy-Item -Path C:\ps-test\MyModule -Destination `
$HOME\Documents\PowerShell\Modules
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 bagian Lokasi Sumber Daya Modul dan DSC, dan PSModulePath .
Cara Menemukan Modul terinstal
Untuk menemukan modul yang diinstal di lokasi modul default, tetapi belum diimpor ke sesi Anda, ketik:
Get-Module -ListAvailable
Untuk menemukan modul yang telah diimpor ke sesi Anda, pada prompt PowerShell, ketik:
Get-Module
Untuk informasi selengkapnya tentang Get-Module
cmdlet, lihat Get-Module.
Cara Menemukan 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.
Cara Mendapatkan Bantuan untuk Perintah dalam Modul
Jika modul berisi file Bantuan untuk perintah yang diekspornya, Get-Help
cmdlet akan menampilkan topik Bantuan. Gunakan format perintah yang sama dengan Get-Help
yang akan Anda gunakan untuk mendapatkan bantuan untuk perintah apa pun di PowerShell.
Dimulai di PowerShell 3.0, Anda dapat mengunduh file Bantuan untuk modul dan mengunduh pembaruan ke file Bantuan sehingga tidak pernah usang.
Untuk mendapatkan bantuan untuk perintah dalam modul, ketik:
Get-Help <command-name>
Untuk mendapatkan bantuan online untuk perintah dalam modul, ketik:
Get-Help <command-name> -Online
Untuk mengunduh dan menginstal file bantuan untuk perintah dalam modul, ketik:
Update-Help -Module <module-name>
Untuk informasi selengkapnya, lihat Get-Help dan Update-Help.
Cara Mengimpor Modul
Anda mungkin harus mengimpor modul atau mengimpor file modul. Mengimpor diperlukan ketika modul tidak diinstal di lokasi yang ditentukan oleh variabel lingkungan PSModulePath , $env:PSModulePath
, atau modul terdiri dari file, seperti file .dll atau .psm1, alih-alih modul umum yang dikirimkan sebagai folder.
Anda juga dapat memilih untuk mengimpor modul sehingga Anda dapat menggunakan parameter Import-Module
perintah, seperti parameter Awalan, yang menambahkan awalan khusus ke nama kata benda dari semua perintah yang diimpor, atau parameter NoClobber , yang mencegah modul menambahkan perintah yang akan menyembunyikan atau mengganti perintah yang ada dalam sesi.
Untuk mengimpor modul, gunakan Import-Module
cmdlet .
Untuk mengimpor modul di lokasi PSModulePath ke sesi saat ini, gunakan format perintah berikut.
Import-Module <module-name>
Misalnya, perintah berikut mengimpor modul BitsTransfer ke sesi saat ini.
Import-Module BitsTransfer
Untuk mengimpor modul yang tidak berada di lokasi modul default, gunakan jalur yang sepenuhnya memenuhi syarat ke folder modul dalam perintah .
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.
Cara Mengimpor Modul ke Setiap Sesi
Perintah Import-Module
mengimpor modul ke sesi PowerShell Anda saat ini. Untuk mengimpor modul ke setiap sesi PowerShell yang Anda mulai, tambahkan Import-Module
perintah ke profil PowerShell Anda.
Untuk informasi selengkapnya tentang profil, lihat about_Profiles.
Cara Menghapus Modul
Saat Anda menghapus modul, perintah yang ditambahkan modul akan dihapus dari sesi.
Untuk menghapus modul dari sesi Anda, gunakan format perintah berikut.
Remove-Module <module-name>
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.
Modul dan Lokasi Sumber Daya DSC, dan PSModulePath
Variabel $env:PSModulePath
lingkungan berisi daftar lokasi folder yang dicari untuk menemukan modul dan sumber daya.
Secara default, lokasi efektif yang ditetapkan $env:PSModulePath
adalah:
Lokasi di seluruh sistem:
$PSHOME\Modules
Folder ini berisi modul yang dikirim dengan Windows dan PowerShell.
Sumber daya DSC yang disertakan dengan PowerShell disimpan dalam
$PSHOME\Modules\PSDesiredStateConfiguration\DSCResources
folder .Modul khusus pengguna: Ini adalah modul yang diinstal oleh pengguna dalam cakupan pengguna.
Install-Module
memiliki parameter Cakupan yang memungkinkan Anda menentukan apakah modul diinstal untuk pengguna saat ini atau untuk semua pengguna. Untuk informasi selengkapnya, lihat Install-Module.Lokasi CurrentUser khusus pengguna di Windows adalah folder yang
PowerShell\Modules
terletak di lokasi Dokumen di profil pengguna Anda. Jalur spesifik lokasi tersebut bervariasi menurut versi Windows dan apakah Anda menggunakan pengalihan folder atau tidak. Microsoft OneDrive juga dapat mengubah lokasi folder Dokumen Anda.Secara default, pada Windows 10 dan yang lebih tinggi, lokasi tersebut adalah
$HOME\Documents\PowerShell\Modules
. Di Linux atau Mac, lokasi CurrentUser adalah$HOME/.local/share/powershell/Modules
.Catatan
Anda dapat memverifikasi lokasi folder Dokumen Anda menggunakan perintah berikut:
[Environment]::GetFolderPath('MyDocuments')
.Lokasi AllUsers ada
$env:PROGRAMFILES\PowerShell\Modules
di Windows. Di Linux atau Mac, modul disimpan di/usr/local/share/powershell/Modules
.
Catatan
Untuk menambahkan atau mengubah file di $env:Windir\System32
direktori, mulai PowerShell dengan opsi Jalankan sebagai administrator .
Anda dapat mengubah lokasi modul default pada sistem Anda dengan mengubah nilai variabel lingkungan PSModulePath , $Env:PSModulePath
. Variabel lingkungan PSModulePath dimodelkan pada variabel lingkungan Jalur dan memiliki format yang sama.
Untuk melihat lokasi modul default, ketik:
$Env:PSModulePath
Untuk menambahkan lokasi modul default, gunakan format perintah berikut.
$Env:PSModulePath = $Env:PSModulePath + ";<path>"
Titik koma (;
) dalam perintah memisahkan jalur baru dari jalur yang mendahuluinya dalam daftar.
Misalnya, untuk menambahkan C:\ps-test\Modules
direktori, ketik:
$Env:PSModulePath + ";C:\ps-test\Modules"
Untuk menambahkan lokasi modul default di Linux atau MacOS, gunakan format perintah berikut:
$Env:PSModulePath += ":<path>"
Misalnya, untuk menambahkan /usr/local/Fabrikam/Modules
direktori ke nilai variabel lingkungan PSModulePath , ketik:
$Env:PSModulePath += ":/usr/local/Fabrikam/Modules"
Di Linux atau MacOS, titik dua (:
) dalam perintah memisahkan jalur baru dari jalur yang mendahuluinya dalam daftar.
Saat Anda menambahkan jalur ke PSModulePath, Get-Module
dan Import-Module
perintah menyertakan modul di jalur tersebut.
Nilai yang Anda tetapkan hanya memengaruhi sesi saat ini. Untuk membuat perubahan persisten, tambahkan perintah ke profil PowerShell Anda atau gunakan Sistem di Panel Kontrol untuk mengubah nilai variabel lingkungan PSModulePath di registri.
Selain itu, untuk membuat perubahan persisten, Anda juga dapat menggunakan metode SetEnvironmentVariable dari kelas System.Environment untuk menambahkan Jalur ke variabel lingkungan PSModulePath .
Untuk informasi selengkapnya tentang variabel PSModulePath , lihat about_Environment_Variables.
Modul dan 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.
Konflik nama dapat mengakibatkan perintah disembunyikan atau diganti.
Tersembunyi
Perintah disembunyikan ketika bukan perintah yang berjalan saat Anda mengetik nama perintah, tetapi Anda dapat menjalankannya dengan menggunakan metode lain, seperti dengan memenuhi syarat nama perintah dengan nama modul atau snap-in tempatnya berasal.
Diganti
Perintah diganti ketika Anda tidak dapat menjalankannya karena telah ditimpa oleh perintah dengan nama yang sama. Bahkan ketika Anda menghapus modul yang menyebabkan konflik, Anda tidak dapat menjalankan perintah yang diganti kecuali Anda memulai ulang sesi.
Import-Module
mungkin menambahkan perintah yang menyembunyikan dan mengganti perintah dalam sesi saat ini. Selain itu, perintah dalam sesi Anda dapat menyembunyikan perintah yang ditambahkan modul.
Untuk mendeteksi konflik nama, gunakan parameter Get-Command
Semua cmdlet. Dimulai di PowerShell 3.0, 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 Prefiks 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 Import-Module
Alias, Cmdlet, Function, dan Variable untuk memilih hanya perintah yang ingin Anda impor, dan Anda dapat mengecualikan perintah yang menyebabkan konflik nama di sesi 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.
Bahkan jika perintah disembunyikan, Anda dapat menjalankannya dengan memenuhi syarat nama perintah dengan nama modul atau snap-in tempat perintah berasal.
Aturan prioritas perintah PowerShell menentukan perintah mana yang berjalan saat sesi menyertakan perintah dengan nama yang sama.
Misalnya, saat 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.
Modul dan Snap-in
Anda dapat menambahkan perintah 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 atau snap-in dari sesi Anda, gunakan perintah berikut untuk menentukan perintah mana yang akan dihapus.
Untuk menemukan sumber cmdlet di sesi Anda, gunakan format perintah berikut:
Get-Command <cmdlet-name> | Format-List -Property verb,noun,pssnapin,module
Misalnya, untuk menemukan sumber Get-Date
cmdlet, ketik:
Get-Command Get-Date | Format-List -Property verb,noun,module
Peringatan dan Kesalahan terkait modul
Perintah yang diekspor modul harus mengikuti aturan penamaan perintah PowerShell. Jika modul yang Anda impor mengekspor cmdlet atau fungsi yang memiliki kata kerja yang tidak disetujui dalam namanya, Import-Module
cmdlet akan menampilkan pesan peringatan berikut.
PERINGATAN: Beberapa nama perintah yang diimpor termasuk kata kerja yang tidak disetujui yang mungkin membuatnya kurang dapat ditemukan. Gunakan parameter Verbose untuk detail selengkapnya atau ketik Get-Verb untuk melihat daftar kata kerja yang disetujui.
Pesan ini hanyalah peringatan. Modul lengkap masih diimpor, termasuk perintah yang tidak sesuai. Meskipun pesan ditampilkan kepada pengguna modul, masalah penamaan harus diperbaiki oleh penulis modul.
Untuk menekan pesan peringatan, gunakan parameter DisableNameChecking cmdlet Import-Module
.
Modul bawaan dan Snap-in
Di PowerShell 2.0 dan di program host gaya yang lebih lama di PowerShell 3.0 dan yang lebih baru, perintah inti yang diinstal dengan PowerShell dikemas dalam snap-in yang ditambahkan secara otomatis ke setiap sesi PowerShell.
Dimulai di PowerShell 3.0, untuk program host yang mengimplementasikan InitialSessionState.CreateDefault2
API status sesi awal, snap-in Microsoft.PowerShell.Core ditambahkan ke setiap sesi secara default. Modul dimuat secara otomatis pada penggunaan pertama.
Catatan
Sesi jarak jauh, termasuk sesi yang dimulai dengan menggunakan New-PSSession
cmdlet, adalah sesi gaya yang lebih lama di mana perintah bawaan dikemas dalam snap-in.
Modul berikut (atau snap-in) diinstal dengan PowerShell.
- CimCmdlets
- Microsoft.PowerShell.Archive
- Microsoft.PowerShell.Core
- Microsoft.PowerShell.Diagnostics
- Microsoft.PowerShell.Host
- Microsoft.PowerShell.Management
- Microsoft.PowerShell.Security
- Microsoft.PowerShell.Utility
- Microsoft.WSMan.Management
- PackageManagement
- PowerShellGet
- PSDesiredStateConfiguration
- PSDiagnostics
- PSReadline
Peristiwa Modul Pengelogan
Dimulai di PowerShell 3.0, Anda dapat merekam peristiwa eksekusi untuk cmdlet dan fungsi dalam modul PowerShell dan snap-in dengan mengatur properti LogPipelineExecutionDetails modul dan snap-in ke $True
.
Anda juga dapat menggunakan pengaturan Kebijakan Grup, Mengaktifkan Pengelogan Modul, untuk mengaktifkan pengelogan modul di semua sesi PowerShell. Untuk informasi selengkapnya, lihat artikel kebijakan pengelogan dan grup.