New-Module
메모리에만 존재하는 새 동적 모듈을 만듭니다.
구문
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은 New-Module
스크립트 블록에서 동적 모듈을 만듭니다. 함수 및 변수와 같은 동적 모듈의 멤버는 세션에서 즉시 사용할 수 있으며 세션을 닫을 때까지 계속 사용할 수 있습니다.
정적 모듈과 마찬가지로 동적 모듈의 cmdlet과 함수는 기본적으로 내보내고 변수와 별칭은 내보내지 않습니다. 그러나 Export-ModuleMember cmdlet 및 매개 변수를 사용하여 기본값을 재정의 New-Module
할 수 있습니다.
AsCustomObject 매개 변수 New-Module
를 사용하여 동적 모듈을 사용자 지정 개체로 반환할 수도 있습니다. 함수와 같은 모듈의 멤버는 세션으로 가져오는 대신 사용자 지정 개체의 스크립트 메서드로 구현됩니다.
동적 모듈은 디스크가 아닌 메모리에만 존재합니다. 모든 모듈과 마찬가지로 동적 모듈의 멤버는 전역 범위의 자식인 프라이빗 모듈 범위에서 실행됩니다. Get-Module은 동적 모듈을 가져올 수 없지만 Get-Command는 내보낸 멤버를 가져올 수 있습니다.
동적 모듈을 Get-Module
사용할 수 있도록 하려면 명령을 Import-Module로 파이프 New-Module
하거나 반환되는 New-Module
모듈 개체를 파이프합니다 Import-Module
. 이 작업은 동적 모듈을 Get-Module
목록에 추가하지만 모듈을 디스크에 저장하거나 영구적으로 만들지는 않습니다.
예제
예제 1: 동적 모듈 만들기
이 예제에서는 함수가 호출 Hello
된 새 동적 모듈을 만듭니다. 이 명령은 새 동적 모듈을 나타내는 모듈 개체를 반환합니다.
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 : {}
예제 2: 동적 모듈 및 Get-Module 및 Get-Command 작업
이 예제에서는 동적 모듈이 cmdlet에서 반환되지 않음을 Get-Module
보여 줍니다. 내보내는 멤버는 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!"
예제 3: 현재 세션으로 변수 내보내기
이 예제에서는 cmdlet을 Export-ModuleMember
사용하여 변수를 현재 세션으로 내보냅니다.
명령이 Export-ModuleMember
없으면 함수만 내보냅니다.
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
출력은 변수와 함수를 모두 세션으로 내보낸 것을 보여줍니다.
예제 4: Get-Module에서 동적 모듈을 사용할 수 있도록 설정
이 예제에서는 동적 모듈을 파이핑하여 동적 모듈Import-Module
을 Get-Module
사용할 수 있도록 할 수 있음을 보여 줍니다.
New-Module
는 cmdlet에 파이프되는 모듈 개체를 Import-Module
만듭니다. Name New-Module
매개 변수는 모듈에 친숙한 이름을 할당합니다. Import-Module
기본적으로 개체를 반환하지 않으므로 이 명령의 출력은 없습니다. Get-Module
GreetingModule을 현재 세션으로 가져왔습니다.
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
동적 모듈이 내보내는 함수를 보여 Hello
줍니다.
예제 5: 함수를 내보낸 사용자 지정 개체 생성
이 예제에서는 AsCustomObject 매개 변수 New-Module
를 사용하여 내보낸 함수를 나타내는 스크립트 메서드가 있는 사용자 지정 개체를 생성하는 방법을 보여 줍니다.
cmdlet은 New-Module
두 개의 함수를 사용하여 동적 모듈을 만들고 . Hello
Goodbye
AsCustomObject 매개 변수는 기본적으로 생성하는 PSModuleInfo 개체 대신 사용자 지정 개체 New-Module
를 만듭니다. 이 사용자 지정 개체는 변수에 $m
저장됩니다.
변수에 $m
할당된 값이 없는 것으로 보입니다.
$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으로 Get-Member
파이핑 $m
하면 사용자 지정 개체의 속성과 메서드가 표시됩니다. 출력은 개체에 및 Goodbye
함수를 나타내는 스크립트 메서드가 Hello
있음을 보여 줍니다.
마지막으로 이러한 스크립트 메서드를 호출하고 결과를 표시합니다.
예제 6: 스크립트 블록의 결과 가져오기
이 예제에서는 ReturnResult 매개 변수를 사용하여 모듈 개체를 요청하는 대신 스크립트 블록 실행 결과를 요청합니다. 새 모듈의 스크립트 블록은 함수를 정의한 SayHello
다음 함수를 호출합니다.
New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!
매개 변수
-ArgumentList
스크립트 블록에 전달되는 매개 변수 값인 인수 배열을 지정합니다. ArgumentList의 동작에 대한 자세한 내용은 about_Splatting 참조하세요.
형식: | Object[] |
별칭: | Args |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-AsCustomObject
이 cmdlet은 동적 모듈을 나타내는 사용자 지정 개체를 반환합니다. 모듈 멤버는 사용자 지정 개체의 스크립트 메서드로 구현되지만 세션으로 가져오지 않습니다. 사용자 지정 개체를 변수에 저장하고 점 표기법을 사용하여 멤버를 호출할 수 있습니다.
모듈에 이름이 같은 멤버가 여러 개 있는 경우(예: 함수 및 변수 이름이 모두 A인 변수) 사용자 지정 개체에서 각 이름을 가진 하나의 멤버만 액세스할 수 있습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Cmdlet
이 cmdlet이 모듈에서 현재 세션으로 내보내는 cmdlet 배열을 지정합니다. 쉼표로 구분된 cmdlet 목록을 입력합니다. 와일드카드 문자를 사용할 수 있습니다. 기본적으로 모듈의 모든 cmdlet은 내보내집니다.
스크립트 블록에서 cmdlet을 정의할 수는 없지만 이진 모듈에서 cmdlet을 가져오는 경우 동적 모듈에 cmdlet이 포함될 수 있습니다.
형식: | String[] |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Function
이 cmdlet이 모듈에서 현재 세션으로 내보내는 함수 배열을 지정합니다. 쉼표로 구분된 함수 목록을 입력합니다. 와일드카드 문자를 사용할 수 있습니다. 기본적으로 모듈에 정의된 모든 함수는 내보내집니다.
형식: | String[] |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | True |
-Name
새 모듈의 이름을 지정합니다. 모듈 이름을 New-Module로 파이프할 수도 있습니다.
기본값은 동적 모듈의 경로를 지정하는 GUID로 __DynamicModule_
시작하고 뒤에 나타나는 자동 생성된 이름입니다.
형식: | String |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-ReturnResult
이 cmdlet이 스크립트 블록을 실행하고 모듈 개체를 반환하는 대신 스크립트 블록 결과를 반환한다는 것을 나타냅니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-ScriptBlock
동적 모듈의 내용을 지정합니다. 내용을 중괄호({}
)로 묶어 스크립트 블록을 만듭니다. 이 매개 변수는 필수입니다.
형식: | ScriptBlock |
Position: | 1 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
입력
모듈 이름을 이 cmdlet으로 파이프할 수 있습니다.
출력
이 cmdlet은 기본적으로 PSModuleInfo 개체를 생성합니다.
AsCustomObject 매개 변수를 사용하면 PSCustomObject 개체가 생성됩니다.
ReturnResult 매개 변수를 사용하는 경우 이 cmdlet은 동적 모듈에서 스크립트 블록을 평가한 결과를 반환합니다.
참고
Windows PowerShell에는 다음 별칭이 포함됩니다.New-Module
nmo
별칭으로 참조할 New-Module
수도 있습니다. nmo
자세한 내용은 about_Aliases를 참조하세요.
관련 링크
PowerShell