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:

  1. Instal modul. (Ini sering dilakukan untuk Anda.)
  2. Temukan perintah yang ditambahkan modul.
  3. 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-CommandSemua 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-ModuleAlias, 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

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.

Lihat juga