New-Module

Yalnızca bellekte var olan yeni bir dinamik modül oluşturur.

Syntax

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

Description

cmdlet'i New-Module bir betik bloğundan dinamik bir modül oluşturur. İşlevler ve değişkenler gibi dinamik modülün üyeleri oturumda hemen kullanılabilir ve siz oturumu kapatana kadar kullanılabilir durumda kalır.

Statik modüller gibi, varsayılan olarak dinamik modüldeki cmdlet'ler ve işlevler dışarı aktarılır ve değişkenler ve diğer adlar dışarı aktarılmaz. Ancak, varsayılanları geçersiz kılmak için Export-ModuleMember cmdlet'ini New-Module ve parametrelerini kullanabilirsiniz.

Dinamik modülü özel bir nesne olarak döndürmek için asCustomObject parametresini New-Module de kullanabilirsiniz. İşlevler gibi modüllerin üyeleri, oturuma içeri aktarılmak yerine özel nesnenin betik yöntemleri olarak uygulanır.

Dinamik modüller diskte değil yalnızca bellekte bulunur. Tüm modüllerde olduğu gibi dinamik modüllerin üyeleri de genel kapsamın alt öğesi olan özel bir modül kapsamında çalışır. Get-Module dinamik modül alamaz, ancak Get-Command dışarı aktarılan üyeleri alabilir.

Bir dinamik modülü için kullanılabilir hale getirmek için Get-ModuleNew-Module bir komutu Import-Module'e aktarın veya döndüren New-Module modül nesnesinin kanalını oluşturunImport-Module. Bu eylem, dinamik modülü Get-Module listeye ekler, ancak modülü diske kaydetmez veya kalıcı hale getirmez.

Örnekler

Örnek 1: Dinamik modül oluşturma

Bu örnek adlı Hellobir işlevle yeni bir dinamik modül oluşturur. komutu, yeni dinamik modülü temsil eden bir modül nesnesi döndürür.

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     : {}

Örnek 2: Dinamik modüller ve Get-Module ve Get-Command ile çalışma

Bu örnek, dinamik modüllerin cmdlet tarafından Get-Module döndürülmediğini gösterir. Dışarı aktardıkları üyeler cmdlet'i tarafından Get-Command döndürülür.

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!"

Örnek 3: Değişkeni geçerli oturuma aktarma

Bu örnek, Export-ModuleMember bir değişkeni geçerli oturuma aktarmak için cmdlet'ini kullanır. Export-ModuleMember komutu olmadan yalnızca işlev dışarı aktarılır.

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

Çıktı, hem değişkenin hem de işlevin oturuma aktarıldığını gösterir.

Örnek 4: Bir dinamik modülü Get-Module'de kullanılabilir hale getirme

Bu örnekte, dinamik modülü 'ye aktararak bir dinamik modülün kullanımına Get-ModuleImport-Modulesunabileceğiniz gösterilmektedir.

New-Module cmdlet'ine Import-Module yöneltilen bir modül nesnesi oluşturur. name parametresi New-Module modüle kolay bir ad atar. Import-Module Varsayılan olarak hiçbir nesne döndürmediğinden, bu komuttan çıkış yoktur. Get-ModuleGreetingModule'un geçerli oturuma aktarıldığını gösterir.

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'i Get-Command , dinamik modülün dışarı aktarıldığı işlevi gösterir Hello .

Örnek 5: Dışarı aktarılan işlevlere sahip özel bir nesne oluşturma

Bu örnekte, dışarı aktarılan işlevleri temsil eden betik yöntemlerine sahip özel bir nesne oluşturmak için asCustomObject parametresinin New-Module nasıl kullanılacağı gösterilmektedir.

cmdlet'iNew-Module, ve Goodbyeolmak üzere iki işleve Hello sahip bir dinamik modül oluşturur. AsCustomObject parametresi, varsayılan olarak oluşturan PSModuleInfo nesnesi yerine özel bir nesne New-Module oluşturur. Bu özel nesne değişkene $m kaydedilir. Değişkenin $m atanmış değeri yok gibi görünüyor.

$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

Cmdlet'ine Get-Member yönelik boru$m, özel nesnenin özelliklerini ve yöntemlerini görüntüler. Çıktı, nesnesinin ve Goodbye işlevlerini temsil eden betik yöntemlerine Hello sahip olduğunu gösterir. Son olarak, bu betik yöntemlerini çağırır ve sonuçları görüntüleriz.

Örnek 6: Betik bloğunun sonuçlarını alma

Bu örnek, bir modül nesnesi istemek yerine betik bloğunun çalıştırılmasının sonuçlarını istemek için ReturnResult parametresini kullanır. Yeni modüldeki betik bloğu işlevi tanımlar SayHello ve işlevi çağırır.

New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult

Hello, World!

Parametreler

-ArgumentList

Betik bloğuna geçirilen parametre değerleri olan bir bağımsız değişken dizisini belirtir. ArgumentList'in davranışı hakkında daha fazla bilgi için bkz. about_Splatting.

Type:Object[]
Aliases:Args
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AsCustomObject

Bu cmdlet'in dinamik modülü temsil eden özel bir nesne döndürdüğünü gösterir. Modül üyeleri özel nesnenin betik yöntemleri olarak uygulanır, ancak oturuma aktarılmaz. Özel nesneyi bir değişkene kaydedebilir ve üyeleri çağırmak için noktalı gösterimi kullanabilirsiniz.

Modülde aynı ada sahip bir işlev ve her ikisi de A adlı bir değişken gibi birden çok üye varsa, özel nesneden her ada sahip yalnızca bir üyeye erişilebilir.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Cmdlet

Bu cmdlet'in modülden geçerli oturuma aktarıldığı bir cmdlet dizisi belirtir. Virgülle ayrılmış bir cmdlet listesi girin. Joker karakterlere izin verilir. Varsayılan olarak, modüldeki tüm cmdlet'ler dışarı aktarılır.

Bir betik bloğunda cmdlet'leri tanımlayamazsınız, ancak bir dinamik modül, cmdlet'leri bir ikili modülden içeri aktarırsa cmdlet'leri içerebilir.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Function

Bu cmdlet'in modülden geçerli oturuma aktarıldığı bir işlev dizisini belirtir. Virgülle ayrılmış bir işlev listesi girin. Joker karakterlere izin verilir. Varsayılan olarak, bir modülde tanımlanan tüm işlevler dışarı aktarılır.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Name

Yeni modül için bir ad belirtir. Modül adını New-Module'e de aktarabilirsiniz.

Varsayılan değer, ile __DynamicModule_ başlayan ve ardından dinamik modülün yolunu belirten bir GUID ile otomatik olarak oluşturulan bir addır.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ReturnResult

Bu cmdlet'in betik bloğunu çalıştırdığını ve bir modül nesnesi döndürmek yerine betik bloğu sonuçlarını döndürdüğünü gösterir.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ScriptBlock

Dinamik modülün içeriğini belirtir. Betik bloğu oluşturmak için içeriği ayraç içine alın ({}). Bu parametre zorunludur.

Type:ScriptBlock
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Girişler

String

Modül adını bu cmdlet'e aktarabilirsiniz.

Çıkışlar

PSModuleInfo

Bu cmdlet varsayılan olarak bir PSModuleInfo nesnesi oluşturur.

PSCustomObject

AsCustomObject parametresini kullanırsanız, bir PSCustomObject nesnesi oluşturur.

Object

ReturnResult parametresini kullanırsanız, bu cmdlet dinamik modüldeki betik bloğunu değerlendirmenin sonucunu döndürür.

Notlar

PowerShell için aşağıdaki diğer adları New-Moduleiçerir:

  • Tüm platformlar:
    • nmo