Bagikan melalui


tentang_Modul

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 cmdlet Remove-Module.

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.

Nota

Sebelum PowerShell 3.0, cmdlet dan penyedia layanan dikemas dalam snap-in PowerShell. Mulai dari PowerShell 3.0, snap-in Microsoft.PowerShell.Core secara default ditambahkan ke setiap sesi. 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, folder Modules untuk pengguna saat ini tidak ada. Jika Anda menginstal modul dalam cakupan CurrentUser menggunakan Install-Module atau Install-PSResource, cmdlet tersebut membuat folder Modules untuk pengguna saat ini. Jika folder tidak ada, Anda dapat membuatnya secara manual.

Gunakan perintah berikut untuk membuat folder Modules untuk pengguna saat ini:

$folder = New-Item -Type Directory -Path $HOME\Documents\PowerShell\Modules

Lokasi ini secara otomatis disertakan dalam variabel lingkungan $Env:PSModulePath. 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 variabel lingkungan $Env:PSModulePath.

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, akan diimpor ke dalam sesi Anda.

  • Jalankan Perintah

    Get-CimInstance Win32_OperatingSystem
    
  • Dapatkan Perintah

    Get-Command Get-CimInstance
    
  • Dapatkan Bantuan untuk Perintah

    Get-Help Get-CimInstance
    

Saat Anda memakai Get-Command dengan karakter pengganti (*), PowerShell tidak mengimpor modul apa pun. Anda dapat menggunakan wildcard untuk menemukan perintah tanpa harus memuat modul yang mungkin tidak Anda perlukan dalam sesi Anda.

Mengimpor modul secara manual

Mengimpor modul secara manual diperlukan saat modul tidak diinstal di lokasi yang ditentukan oleh variabel lingkungan $Env:PSModulePath, atau ketika modul disediakan sebagai file .dll atau .psm1 mandiri, bukan modul yang dipaketkan.

Selain itu, perintah yang menggunakan penyedia PowerShell tidak secara otomatis mengimpor modul. Misalnya, jika Anda menggunakan perintah yang memerlukan drive WSMan:, seperti cmdlet Get-PSSessionConfiguration, Anda mungkin perlu menjalankan cmdlet Import-Module untuk mengimpor modul Microsoft.WSMan.Management yang menyertakan drive WSMan:.

Anda mungkin juga ingin mengubah cara modul diimpor dalam sesi Anda. Misalnya, parameter Prefiks dari Import-Module menambahkan awalan 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 $Env:PSModulePathAnda, gunakan jalur yang sepenuhnya memenuhi syarat ke folder modul. Misalnya, untuk menambahkan modul TestCmdlets di direktori ke 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 C:\ps-test ke 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 Import-Module ke 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 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. Gunakan cmdlet Install-Module 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:PSModulePathAnda.

Di PowerShell gunakan cmdlet Copy-Item. Misalnya, jalankan perintah berikut untuk menyalin folder MyModule 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

Cmdlet Get-Module mengambil modul-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

Gunakan cmdlet Get-Command untuk menemukan semua perintah yang tersedia. Anda dapat menggunakan parameter cmdlet Get-Command 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 cmdlet Get-Command, 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 segala jenis perintah, termasuk cmdlet, penyedia, dan fungsi, serta 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 cmdlet Get-Date dan Get-Help:

Get-Command Get-Date, Get-Help -All |
    Select-Object -Property Name, CommandType, Module ,PSSnapIn

Output berikut menunjukkan bahwa cmdlet Get-Help berada di Microsoft.PowerShell.Core snap-in. 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 satu 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 drive Function:.

Remove-Item Function:Get-Date

Untuk informasi selengkapnya tentang drive Function:, 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. Misalnya:

Microsoft.PowerShell.Utility\Get-Date

Menjalankan dengan awalan nama modul memastikan bahwa menjalankan versi dari modul Microsoft.PowerShell.Utility.

Untuk mendeteksi konflik nama, gunakan parameter Semua dari cmdlet Get-Command. 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 Awalan dari cmdlet Import-Module. Parameter Awalan menambahkan awalan ke nama perintah yang diimpor sehingga menjadi unik dalam sesi. Parameter NoClobber tidak mengimpor perintah apa pun yang akan menyembunyikan atau mengganti perintah yang ada dalam sesi.

Anda juga dapat menggunakan Alias, Cmdlet, Fungsi , dan parameter Variabel untuk memilih hanya perintah yang ingin Anda impor, dan Anda dapat mengecualikan perintah yang menyebabkan konflik nama dalam sesi Anda.

Penulis modul dapat mencegah konflik nama dengan menggunakan properti DefaultCommandPrefix manifes modul untuk menambahkan awalan default ke semua nama perintah. Nilai parameter Awalan lebih diutamakan daripada nilai DefaultCommandPrefix.

Lihat juga