다음을 통해 공유


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

New-Module cmdlet은 스크립트 블록에서 동적 모듈을 만듭니다. 함수 및 변수와 같은 동적 모듈의 멤버는 세션에서 즉시 사용할 수 있으며 세션을 닫을 때까지 계속 사용할 수 있습니다.

정적 모듈과 마찬가지로 기본적으로 동적 모듈의 cmdlet 및 함수는 내보내지고 변수와 별칭은 내보내지지 않습니다. 그러나 Export-ModuleMember cmdlet 및 New-Module 매개 변수를 사용하여 기본값을 재정의할 수 있습니다.

New-ModuleAsCustomObject 매개 변수를 사용하여 동적 모듈을 사용자 지정 개체로 반환할 수도 있습니다. 함수와 같은 모듈의 멤버는 세션으로 가져오는 대신 사용자 지정 개체의 스크립트 메서드로 구현됩니다.

동적 모듈은 디스크가 아닌 메모리에만 존재합니다. 모든 모듈과 마찬가지로 동적 모듈의 멤버는 전역 범위의 자식인 프라이빗 모듈 범위에서 실행됩니다. Get-Module 동적 모듈을 가져올 수 없지만 Get-Command 내보낸 멤버를 가져올 수 있습니다.

Get-Module동적 모듈을 사용할 수 있도록 하려면 New-Module 명령을 Import-Module로 파이프하거나 New-Module 모듈 개체를 Import-Module파이프합니다. 이 작업은 동적 모듈을 Get-Module 목록에 추가하지만 모듈을 디스크에 저장하거나 영구적으로 만들지는 않습니다.

예제

예제 1: 동적 모듈 만들기

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

이 명령은 Hello라는 함수를 사용하여 새 동적 모듈을 만듭니다. 이 명령은 새 동적 모듈을 나타내는 모듈 개체를 반환합니다.

예제 2: 동적 모듈 작업 및 Get-Module 및 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!"

이 예제에서는 동적 모듈이 Get-Module cmdlet에서 반환되지 않음을 보여 줍니다. 내보내는 멤버는 Get-Command cmdlet에서 반환됩니다.

예제 3: 현재 세션으로 변수 내보내기

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

이 명령은 Export-ModuleMember cmdlet을 사용하여 변수를 현재 세션으로 내보냅니다. Export-ModuleMember 명령이 없으면 함수만 내보냅니다.

출력은 변수와 함수를 모두 세션으로 내보낸 것을 보여줍니다.

예제 4: 동적 모듈을 Get-Module

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

이 명령은 동적 모듈을 Import-Module파이프하여 Get-Module 동적 모듈을 사용할 수 있도록 할 수 있음을 보여 줍니다.

첫 번째 명령은 파이프라인 연산자(|)를 사용하여 New-Module 생성할 모듈 개체를 Import-Module cmdlet으로 보냅니다. 이 명령은 New-ModuleName 매개 변수를 사용하여 모듈에 친숙한 이름을 할당합니다. Import-Module 기본적으로 개체를 반환하지 않으므로 이 명령의 출력은 없습니다.

두 번째 명령은 Get-Module 사용하여 세션에서 모듈을 가져옵니다. 결과는 Get-Module 새 동적 모듈을 가져올 수 있음을 보여줍니다.

세 번째 명령은 Get-Command cmdlet을 사용하여 동적 모듈에서 내보내는 Hello 함수를 가져옵니다.

예제 5: 함수를 내보낸 사용자 지정 개체 생성

$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

이 예제에서는 New-ModuleAsCustomObject 매개 변수를 사용하여 내보낸 함수를 나타내는 스크립트 메서드가 있는 사용자 지정 개체를 생성하는 방법을 보여 줍니다.

첫 번째 명령은 New-Module cmdlet을 사용하여 Hello 및 Goodbye라는 두 함수가 있는 동적 모듈을 생성합니다. 이 명령은 AsCustomObject 매개 변수를 사용하여 New-Module 기본적으로 생성하는 PSModuleInfo 개체 대신 사용자 지정 개체를 생성합니다. 이 명령은 사용자 지정 개체를 $m 변수에 저장합니다.

두 번째 명령은 $m 변수의 값을 표시하려고 시도합니다. 콘텐츠가 표시되지 않습니다.

세 번째 명령은 파이프라인 연산자를 사용하여 사용자 지정 개체의 속성과 메서드를 표시하는 Get-Member cmdlet으로 사용자 지정 개체를 보냅니다. 출력은 개체에 Hello 및 Goodbye 함수를 나타내는 스크립트 메서드가 있음을 보여 줍니다.

네 번째 및 다섯 번째 명령은 스크립트 메서드 형식을 사용하여 Hello 및 Goodbye 함수를 호출합니다.

예제 6: 스크립트 블록의 결과 가져오기

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

Hello, World!

이 명령은 ReturnResult 매개 변수를 사용하여 모듈 개체를 요청하는 대신 스크립트 블록 실행 결과를 요청합니다.

새 모듈의 스크립트 블록은 SayHello 함수를 정의한 다음 함수를 호출합니다.

매개 변수

-ArgumentList

스크립트 블록에 전달되는 매개 변수 값인 인수 배열을 지정합니다.

형식: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로 파이프할 수도 있습니다.

기본값은 __DynamicModule_ 시작되고 동적 모듈의 경로를 지정하는 GUID로 시작하는 자동 생성된 이름입니다.

형식: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

입력

String

모듈 이름을 이 cmdlet으로 파이프할 수 있습니다.

출력

System.Management.Automation.PSModuleInfo, System.Management.Automation.PSCustomObject, or None

이 cmdlet은 기본적으로 PSModuleInfo 개체를 생성합니다. AsCustomObject 매개 변수를 사용하면 PSCustomObject 개체가 생성됩니다. ReturnResult 매개 변수를 사용하는 경우 동적 모듈에서 스크립트 블록을 평가한 결과를 반환합니다.

참고

  • 별칭으로 New-Module 참조할 수도 nmo. 자세한 내용은 about_Aliases참조하세요.