Aracılığıyla paylaş


New-Module

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

Sözdizimi

ScriptBlock EnterprisePublishing

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

Description

New-Module cmdlet'i 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 ve New-Module parametrelerini kullanabilirsiniz.

Dinamik modülü özel bir nesne olarak döndürmek için New-Module parametresini de kullanabilirsiniz. Modüllerin üyeleri, örneğin işlevler, oturuma içeri aktarılmak yerine özel bir nesnenin betik metodları olarak hayata geçirilir.

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ü Get-Moduleiçin kullanılabilir hale getirmek için bir New-Module komutunu Import-Module'e aktarın veya New-Module'nin döndürdüğü modül nesnesini Import-Module'e aktarın. Bu eylem, dinamik modülü Get-Module listesine ekler, ancak modülü diske kaydetmez veya kalıcı hale getirmez.

Örnekler

Örnek 1: Dinamik modül oluşturma

Bu örnek, Helloadlı bir 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üllerle çalışma, Get-Module ve Get-Command

Bu örnek, dinamik modüllerin Get-Module cmdlet'i tarafından döndürülmediğini gösterir. Dışarı aktardıkları üyeler Get-Command cmdlet'i tarafından 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 örnekte, bir değişkeni geçerli oturuma aktarmak için Export-ModuleMember cmdlet'i kullanılı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: Dinamik modülü Get-Module için kullanılabilir hale getirme

Bu örnek, dinamik modülü Get-Module'e yönlendirerek Import-Module için kullanılabilir hale getirebileceğinizi göstermektedir.

New-Module, Import-Module cmdlet'ine yöneltilen bir modül nesnesi oluşturur. 'nin New-Module parametresi modüle anlamlı bir ad atar. Import-Module varsayılan olarak hiçbir nesne döndürmediğinden, bu komuttan çıkış yoktur. Geçerli oturuma Get-Module aktarıldığı .

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'i, dinamik modülün dışa aktardığı Hello işlevini gösterir.

Ö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 New-Module parametresinin nasıl kullanılacağı gösterilmektedir.

New-Module cmdlet'i, Hello ve Goodbyeolmak üzere iki işleve sahip bir dinamik modül oluşturur. AsCustomObject parametresi, varsayılan olarak oluşturduğu New-Module nesnesi yerine özel bir nesne oluşturur. Bu özel nesne $m değişkenine kaydedilir. $m değişkeninin 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

$mGet-Member cmdlet'ine boru hattı ile iletmek, özel nesnenin özelliklerini ve yöntemlerini görüntüler. Çıktı, nesnenin Hello ve Goodbye işlevlerini temsil eden betik yöntemlerine 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 örnekte ReturnResult parametresi, bir modül nesnesi istemek yerine betik bloğunun çalıştırılmasının sonuçlarını istemek için kullanılır. Yeni modüldeki betik bloğu, SayHello işlevini tanımlar ve ardından 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 about_Splattingbölümüne bakın.

Parametre özellikleri

Tür:

Object[]

Default value:None
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:Argümanlar

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:SwitchParameter
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:

String[]

Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-Function

Bu cmdlet'in modülden geçerli oturuma aktardığı işlevler 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.

Parametre özellikleri

Tür:

String[]

Default value:None
Joker karakterleri destekler:True
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-Name

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

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

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

Name
Position:0
Zorunlu:True
İşlem hattından gelen değer:True
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:SwitchParameter
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-ScriptBlock

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

Parametre özellikleri

Tür:ScriptBlock
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:1
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

CommonParameters

Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.

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, New-Moduleiçin aşağıdaki diğer adları içerir:

  • Tüm platformlar:
    • nmo