New-Module
Membuat modul dinamis baru yang hanya ada dalam memori.
Sintaks
New-Module
[-ScriptBlock] <ScriptBlock>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-ReturnResult]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[<CommonParameters>]
New-Module
[-Name] <String>
[-ScriptBlock] <ScriptBlock>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-ReturnResult]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Deskripsi
New-Module
Cmdlet membuat modul dinamis dari blok skrip. Anggota modul dinamis, seperti fungsi dan variabel, segera tersedia dalam sesi dan tetap tersedia sampai Anda menutup sesi.
Seperti modul statis, secara default, cmdlet dan fungsi dalam modul dinamis diekspor dan variabel dan alias tidak. Namun, Anda dapat menggunakan cmdlet Export-ModuleMember dan parameter New-Module
untuk mengambil alih default.
Anda juga dapat menggunakan parameter New-Module
AsCustomObject untuk mengembalikan modul dinamis sebagai objek kustom. Anggota modul, seperti fungsi, diimplementasikan sebagai metode skrip objek kustom alih-alih diimpor ke dalam sesi.
Modul dinamis hanya ada dalam memori, bukan pada disk. Seperti semua modul, anggota modul dinamis berjalan dalam cakupan modul privat yang merupakan anak dari cakupan global. Get-Module tidak bisa mendapatkan modul dinamis, tetapi Get-Command bisa mendapatkan anggota yang diekspor.
Untuk membuat modul dinamis tersedia untuk Get-Module
, pipa New-Module
perintah ke Import-Module, atau pipa objek modul yang New-Module
kembali ke Import-Module
. Tindakan ini menambahkan modul dinamis ke Get-Module
daftar, tetapi tidak menyimpan modul ke disk atau membuatnya persisten.
Contoh
Contoh 1: Membuat modul dinamis
Contoh ini membuat modul dinamis baru dengan fungsi yang disebut Hello
. Perintah mengembalikan objek modul yang mewakili modul dinamis baru.
New-Module -ScriptBlock {function Hello {"Hello!"}}
Name : __DynamicModule_2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
Path : 2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
Description :
Guid : 00000000-0000-0000-0000-000000000000
Version : 0.0
ModuleBase :
ModuleType : Script
PrivateData :
AccessMode : ReadWrite
ExportedAliases : {}
ExportedCmdlets : {}
ExportedFunctions : {[Hello, Hello]}
ExportedVariables : {}
NestedModules : {}
Contoh 2: Bekerja dengan modul dinamis dan Get-Module dan Get-Command
Contoh ini menunjukkan bahwa modul dinamis tidak dikembalikan oleh Get-Module
cmdlet. Anggota yang mereka ekspor dikembalikan oleh Get-Command
cmdlet.
new-module -scriptblock {function Hello {"Hello!"}}
Name : __DynamicModule_2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
Path : 2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
Description :
Guid : 00000000-0000-0000-0000-000000000000
Version : 0.0
ModuleBase :
ModuleType : Script
PrivateData :
AccessMode : ReadWrite
ExportedAliases : {}
ExportedCmdlets : {}
ExportedFunctions : {[Hello, Hello]}
ExportedVariables : {}
NestedModules : {}
Get-Module
Get-Command Hello
CommandType Name Definition
----------- ---- ----------
Function Hello "Hello!"
Contoh 3: Mengekspor variabel ke dalam sesi saat ini
Contoh ini menggunakan Export-ModuleMember
cmdlet untuk mengekspor variabel ke dalam sesi saat ini.
Export-ModuleMember
Tanpa perintah, hanya fungsi yang diekspor.
New-Module -ScriptBlock {$SayHelloHelp="Type 'SayHello', a space, and a name."; function SayHello ($name) { "Hello, $name" }; Export-ModuleMember -function SayHello -Variable SayHelloHelp}
$SayHelloHelp
Type 'SayHello', a space, and a name.
SayHello Jeffrey
Hello, Jeffrey
Output menunjukkan bahwa variabel dan fungsi diekspor ke dalam sesi.
Contoh 4: Membuat modul dinamis tersedia untuk Get-Module
Contoh ini menunjukkan bahwa Anda dapat membuat modul dinamis tersedia dengan Get-Module
mempipa modul dinamis ke Import-Module
.
New-Module
membuat objek modul yang disalurkan ke Import-Module
cmdlet. Parameter New-Module
Nama menetapkan nama yang mudah diingat ke modul. Karena Import-Module
tidak mengembalikan objek apa pun secara default, tidak ada output dari perintah ini. Get-Module
bahwa GreetingModule telah diimpor ke sesi saat ini.
New-Module -ScriptBlock {function Hello {"Hello!"}} -name GreetingModule | Import-Module
Get-Module
Name : GreetingModule
Path : d54dfdac-4531-4db2-9dec-0b4b9c57a1e5
Description :
Guid : 00000000-0000-0000-0000-000000000000
Version : 0.0
ModuleBase :
ModuleType : Script
PrivateData :
AccessMode : ReadWrite
ExportedAliases : {}
ExportedCmdlets : {}
ExportedFunctions : {[Hello, Hello]}
ExportedVariables : {}
NestedModules : {}
Get-Command hello
CommandType Name Definition
----------- ---- ----------
Function Hello "Hello!"
Get-Command
Cmdlet menunjukkan Hello
fungsi yang diekspor modul dinamis.
Contoh 5: Membuat objek kustom yang memiliki fungsi yang diekspor
Contoh ini menunjukkan cara menggunakan parameter New-Module
AsCustomObject untuk menghasilkan objek kustom yang memiliki metode skrip yang mewakili fungsi yang diekspor.
New-Module
Cmdlet membuat modul dinamis dengan dua fungsi, Hello
dan Goodbye
. Parameter AsCustomObject membuat objek kustom alih-alih objek PSModuleInfo yang New-Module
dihasilkan secara default. Objek kustom ini disimpan dalam $m
variabel .
Variabel $m
tampaknya tidak memiliki nilai yang ditetapkan.
$m = New-Module -ScriptBlock {
function Hello ($name) {"Hello, $name"}
function Goodbye ($name) {"Goodbye, $name"}
} -AsCustomObject
$m
$m | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Goodbye ScriptMethod System.Object Goodbye();
Hello ScriptMethod System.Object Hello();
$m.goodbye("Jane")
Goodbye, Jane
$m.hello("Manoj")
Hello, Manoj
Piping $m
ke Get-Member
cmdlet menampilkan properti dan metode objek kustom. Output menunjukkan bahwa objek memiliki metode skrip yang mewakili Hello
fungsi dan Goodbye
.
Terakhir, kami memanggil metode skrip ini dan menampilkan hasilnya.
Contoh 6: Dapatkan hasil blok skrip
Contoh ini menggunakan parameter ReturnResult untuk meminta hasil menjalankan blok skrip alih-alih meminta objek modul. Blok skrip dalam modul baru menentukan SayHello
fungsi lalu memanggil fungsi.
New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!
Parameter
-ArgumentList
Menentukan array argumen yang merupakan nilai parameter yang diteruskan ke blok skrip. Untuk informasi selengkapnya tentang perilaku ArgumentList, lihat about_Splatting.
Jenis: | Object[] |
Alias: | Args |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-AsCustomObject
Menunjukkan bahwa cmdlet ini mengembalikan objek kustom yang mewakili modul dinamis. Anggota modul diimplementasikan sebagai metode skrip objek kustom, tetapi mereka tidak diimpor ke dalam sesi. Anda dapat menyimpan objek kustom dalam variabel dan menggunakan notasi titik untuk memanggil anggota.
Jika modul memiliki beberapa anggota dengan nama yang sama, seperti fungsi dan variabel yang keduanya bernama A, hanya satu anggota dengan setiap nama yang dapat diakses dari objek kustom.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Cmdlet
Menentukan array cmdlet yang diekspor cmdlet ini dari modul ke dalam sesi saat ini. Masukkan daftar cmdlet yang dipisahkan koma. Karakter kartubebas diizinkan. Secara default, semua cmdlet dalam modul diekspor.
Anda tidak dapat menentukan cmdlet dalam blok skrip, tetapi modul dinamis dapat menyertakan cmdlet jika mengimpor cmdlet dari modul biner.
Jenis: | String[] |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Function
Menentukan array fungsi yang diekspor cmdlet ini dari modul ke dalam sesi saat ini. Masukkan daftar fungsi yang dipisahkan koma. Karakter kartubebas diizinkan. Secara default, semua fungsi yang ditentukan dalam modul diekspor.
Jenis: | String[] |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | True |
-Name
Menentukan nama untuk modul baru. Anda juga dapat menyalurkan nama modul ke New-Module.
Nilai default adalah nama yang dibuat secara otomatis yang dimulai dengan __DynamicModule_
dan diikuti oleh GUID yang menentukan jalur modul dinamis.
Jenis: | String |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-ReturnResult
Menunjukkan bahwa cmdlet ini menjalankan blok skrip dan mengembalikan hasil blok skrip alih-alih mengembalikan objek modul.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-ScriptBlock
Menentukan konten modul dinamis. Sertakan konten dalam kurung kurawal ({}
) untuk membuat blok skrip. Parameter ini diperlukan.
Jenis: | ScriptBlock |
Position: | 1 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | False |
Input
Anda dapat menyalurkan nama modul ke cmdlet ini.
Output
Cmdlet ini menghasilkan objek PSModuleInfo secara default.
Jika Anda menggunakan parameter AsCustomObject , parameter tersebut menghasilkan objek PSCustomObject .
Jika Anda menggunakan parameter ReturnResult , cmdlet ini mengembalikan hasil evaluasi blok skrip dalam modul dinamis.
Catatan
PowerShell menyertakan alias berikut untuk New-Module
:
- Semua platform:
nmo