Bagikan melalui


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
  • 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

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.

Lihat juga