Bagikan melalui


New-Module

Membuat modul dinamis baru yang hanya ada dalam memori.

Sintaks

ScriptBlock (Default)

New-Module
    [-ScriptBlock] <ScriptBlock>
    [-Function <String[]>]
    [-Cmdlet <String[]>]
    [-ReturnResult]
    [-AsCustomObject]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

Name

New-Module
    [-Name] <String>
    [-ScriptBlock] <ScriptBlock>
    [-Function <String[]>]
    [-Cmdlet <String[]>]
    [-ReturnResult]
    [-AsCustomObject]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

Deskripsi

cmdlet New-Module 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, sedangkan variabel dan alias tidak diekspor. Namun, Anda dapat menggunakan cmdlet Export-ModuleMember dan parameter New-Module untuk mengambil alih default.

Anda juga dapat menggunakan parameter 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 beroperasi dalam cakupan modul privat yang merupakan turunan 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, sambungkan perintah New-Module ke Import-Module, atau sambungkan objek modul yang dihasilkan New-Module ke Import-Module. Tindakan ini menambahkan modul dinamis ke daftar Get-Module, 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 cmdlet Get-Module. Anggota yang diekspor oleh mereka dikembalikan oleh cmdlet Get-Command.

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 cmdlet Export-ModuleMember untuk mengekspor variabel ke dalam sesi saat ini. Tanpa perintah Export-ModuleMember, 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 menjadikan modul dinamis tersedia untuk Get-Module dengan mengalirkan modul dinamis ke Import-Module.

New-Module membuat objek modul yang disalurkan ke cmdlet Import-Module. Parameter Nama dari New-Module memberikan nama ramah 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!"

Cmdlet Get-Command menunjukkan fungsi Hello yang diekspor modul dinamis.

Contoh 5: Membuat objek kustom yang memiliki fungsi yang diekspor

Contoh ini menunjukkan cara menggunakan parameter AsCustomObjectNew-Module untuk menghasilkan objek kustom yang memiliki metode skrip yang mewakili fungsi yang diekspor.

Cmdlet New-Module membuat modul dinamis dengan dua fungsi, Hello dan Goodbye. Parameter AsCustomObject membuat objek kustom alih-alih objek PSModuleInfo yang New-Module hasilkan secara default. Objek kustom ini disimpan dalam variabel $m. 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 cmdlet Get-Member menampilkan properti dan metode objek kustom. Output menunjukkan bahwa objek memiliki metode skrip yang mewakili fungsi Hello dan Goodbye. Terakhir, kami memanggil metode skrip ini dan menampilkan hasilnya.

Contoh 6: Ambil hasil dari blok skrip

Contoh ini menggunakan parameter ReturnResult untuk meminta hasil menjalankan blok skrip alih-alih meminta objek modul. Blok skrip dalam modul baru menentukan fungsi SayHello 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 lebih lanjut tentang perilaku ArgumentList, lihat about_Splatting.

Properti parameter

Jenis:

Object[]

Nilai default:None
Mendukung wildcard:False
DontShow:False
Alias:Argumen

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-AsCustomObject

Menunjukkan bahwa cmdlet ini mengembalikan objek kustom yang mewakili modul dinamis. Anggota modul diimplementasikan sebagai metode skrip dari objek kustom, namun 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.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Cmdlet

Menentukan array cmdlet yang diekspor oleh cmdlet ini dari modul ke sesi yang sedang berjalan. Masukkan daftar cmdlet yang dipisahkan koma. Karakter pengganti 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.

Properti parameter

Jenis:

String[]

Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Function

Menentukan sekumpulan fungsi yang diekspor oleh cmdlet ini dari modul ke dalam sesi saat ini. Masukkan daftar fungsi yang dipisahkan koma. Karakter pengganti diizinkan. Secara default, semua fungsi yang ditentukan dalam modul diekspor.

Properti parameter

Jenis:

String[]

Nilai default:None
Mendukung wildcard:True
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

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

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

Name
Position:0
Wajib:True
Nilai dari alur:True
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-ReturnResult

Menunjukkan bahwa cmdlet ini menjalankan blok skrip dan mengembalikan hasil blok skrip alih-alih mengembalikan objek modul.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-ScriptBlock

Menentukan konten modul dinamis. Sertakan konten dalam kurung kurawal ({}) untuk membuat blok skrip. Parameter ini diperlukan.

Properti parameter

Jenis:ScriptBlock
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:1
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

CommonParameters

Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.

Input

String

Anda dapat menyalurkan nama modul ke cmdlet ini.

Output

PSModuleInfo

Cmdlet ini menghasilkan objek PSModuleInfo secara default.

PSCustomObject

Jika Anda menggunakan parameter AsCustomObject, itu menghasilkan objek PSCustomObject.

Object

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