about_Modules

Deskripsi singkat

Menjelaskan cara menginstal, mengimpor, dan menggunakan modul PowerShell.

Deskripsi panjang

PowerShell menyediakan dua cara untuk mengemas cmdlet, penyedia, fungsi, variabel, dan alias:

  • Snap-in

    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.

  • Modul

    Modul dimuat secara otomatis pada penggunaan pertama dan, tidak seperti snap-in, modul dapat dibongkar atau dimuat ulang selama sesi.

Modul dapat dibuat sebagai rakitan .NET yang dikompilasi yang ditulis dalam C#, atau modul berbasis skrip yang ditulis dalam PowerShell. Topik ini menjelaskan cara menggunakan modul PowerShell. Untuk informasi tentang cara menulis modul PowerShell, lihat Menulis Modul PowerShell.

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\PowerShell\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 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.

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.

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. Misalnya:

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.

Baca juga