New-Module
Yalnızca bellekte var olan yeni bir dinamik modül oluşturur.
Sözdizimi
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-Module
New-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ı Hello
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ü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-Module
Import-Module
sunabileceğ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-Module
GreetingModule'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 Goodbye
olmak ü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.
Tür: | Object[] |
Diğer adlar: | Args |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | SwitchParameter |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | String[] |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | String[] |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | String |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | 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.
Tür: | SwitchParameter |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | ScriptBlock |
Position: | 1 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
Girişler
Modül adını bu cmdlet'e aktarabilirsiniz.
Çıkışlar
Bu cmdlet varsayılan olarak bir PSModuleInfo nesnesi oluşturur.
AsCustomObject parametresini kullanırsanız, bir PSCustomObject nesnesi oluşturur.
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-Module
içerir:
- Tüm platformlar:
nmo
İlişkili Bağlantılar
PowerShell