다음을 통해 공유


New-Module

메모리에만 있는 새 동적 모듈을 만듭니다.

구문

New-Module [-Name] <string> [-ScriptBlock] <scriptblock> [-ArgumentList <Object[]>] [-AsCustomObject] [-Cmdlet <string[]>] [-Function <string[]>] [-ReturnResult] [<CommonParameters>]

New-Module [-ScriptBlock] <scriptblock> [-ArgumentList <Object[]>] [-AsCustomObject] [-Cmdlet <string[]>] [-Function <string[]>] [-ReturnResult] [<CommonParameters>]

설명

New-Module cmdlet은 스크립트 블록에서 동적 모듈을 만듭니다. 동적 모듈의 멤버(예: 함수 및 변수)는 세션에서 즉시 사용할 수 있어야 하며 세션을 닫을 때까지 사용할 수 있는 상태로 유지됩니다.

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

동적 모듈은 메모리에만 있고 디스크에는 없습니다. 모든 모듈과 마찬가지로 동적 모듈의 멤버는 전역 범위의 하위인 개인 모듈 범위에서 실행됩니다. Get-Module은 동적 모듈을 가져올 수 없지만 Get-Command는 내보낸 멤버를 가져올 수 있습니다.

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

매개 변수

-ArgumentList <Object[]>

스크립트 블록으로 전달되는 인수(매개 변수 값)를 지정합니다.

필수 여부

false

위치

named

기본값

없음

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-AsCustomObject

모듈 멤버를 나타내는 멤버가 있는 사용자 지정 개체를 반환합니다.

AsCustomObject 매개 변수를 사용하는 경우 New-Module은 동적 모듈을 만들고 모듈 멤버를 현재 세션으로 가져온 다음 PSModuleInfo 개체 대신 PSCustomObject 개체를 반환합니다. 사용자 지정 개체를 변수에 저장하고 점 표기법을 사용하여 멤버를 호출할 수 있습니다.

모듈에 이름이 같은 여러 멤버가 있는 경우(예: 둘 다 이름이 "A"인 함수 및 변수) 사용자 지정 개체에서 각 이름을 가진 하나의 멤버에만 액세스할 수 있습니다.

필수 여부

false

위치

named

기본값

없음

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-Cmdlet <string[]>

지정된 cmdlet만 모듈에서 현재 세션으로 내보냅니다. 쉼표로 구분된 cmdlet 목록을 입력하십시오. 와일드카드 문자를 사용할 수 있습니다. 기본적으로 모듈의 모든 cmdlet을 내보냅니다.

스크립트 블록에서 cmdlet을 정의할 수는 없지만 동적 모듈이 이진 모듈에서 cmdlet을 가져오는 경우 동적 모듈에 cmdlet이 포함될 수 있습니다.

필수 여부

false

위치

named

기본값

없음

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

true

-Function <string[]>

지정된 함수만 모듈에서 현재 세션으로 내보냅니다. 쉼표로 구분된 함수 목록을 입력합니다. 와일드카드 문자를 사용할 수 있습니다. 기본적으로 모듈에 정의된 모든 함수를 내보냅니다.

필수 여부

false

위치

named

기본값

없음

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

true

-Name <string>

새 모듈의 이름을 지정합니다. 또한 모듈 이름을 New-Module로 파이프할 수 있습니다.

기본값은 "__DynamicModule_"로 시작하고 동적 모듈의 경로를 지정하는 GUID가 뒤에 나오는 자동으로 생성된 이름입니다.

필수 여부

true

위치

1

기본값

"__DynamicModule_" + GUID

파이프라인 입력 적용 여부

true (ByValue)

와일드카드 문자 적용 여부

false

-ReturnResult

스크립트 블록을 실행하고 모듈 개체를 반환하는 대신 스크립트 블록 결과를 반환합니다.

필수 여부

false

위치

named

기본값

False

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-ScriptBlock <scriptblock>

동적 모듈의 내용을 지정합니다. 내용을 중괄호( { } )로 묶어 스크립트 블록을 만듭니다. 이 매개 변수는 필수 사항입니다.

필수 여부

true

위치

1

기본값

없음

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

<CommonParameters>

이 cmdlet은 -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, -OutVariable 등의 일반 매개 변수를 지원합니다. 자세한 내용은 about_commonparameters.

입력 및 출력

입력 유형은 cmdlet으로 파이프할 수 있는 개체의 유형입니다. 반환 유형은 cmdlet에서 반환되는 개체의 유형입니다.

입력

System.String

모듈 이름 문자열을 New-Module로 파이프할 수 있습니다.

출력

System.Management.Automation.PSModuleInfo, System.Management.Automation.PSCustomObject 또는 없음

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

참고

또한 해당 별칭("nmo")으로 New-Module을 참조할 수 있습니다. 자세한 내용은 about_Aliases를 참조하십시오.

예 1

C:\PS>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

C:\PS>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     : {}

C:\PS> get-module
C:\PS>

C:\PS> get-command Hello

CommandType     Name   Definition
-----------     ----   ----------
Function        Hello  "Hello!"

설명
-----------
이 예에서는 Get-Module cmdlet이 동적 모듈을 반환하지 않지만 Get-Command cmdlet은 동적 모듈이 내보내는 멤버를 반환하는 것을 보여 줍니다.





예 3

C:\PS>New-Module -scriptblock {$SayHelloHelp="Type 'SayHello', a space, and a name."; function SayHello ($name) { "Hello, $name" }; Export-ModuleMember -function SayHello -Variable SayHelloHelp}

C:\PS> $SayHelloHelp
Type 'SayHello', a space, and a name.

C:\PS> SayHello Jeffrey
Hello, Jeffrey

설명
-----------
이 명령은 Export-ModuleMember cmdlet을 사용하여 변수를 현재 세션으로 내보냅니다. Export-ModuleMember 명령을 사용하지 않는 경우 함수만 내보냅니다.

출력에는 변수와 함수 모두 세션으로 내보냈다고 나와 있습니다.





예 4

C:\PS>new-module -scriptblock {function Hello {"Hello!"}} -name GreetingModule | import-module

C:\PS> 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     : {}


C:\PS> get-command hello

CommandType     Name                                                               Definition
-----------     ----                                                               ----------
Function        Hello                                                              "Hello!"

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

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

두 번째 명령은 Get-Module cmdlet을 사용하여 세션의 모듈을 가져옵니다. 결과에는 Get-Module이 새 동적 모듈을 가져올 수 있다고 표시됩니다.

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





예 5

C:\PS>$m = new-module -scriptblock {function Hello ($name) {"Hello, $name"}; function Goodbye ($name) {"Goodbye, $name"}} -AsCustomObject

C:\PS> $m

C:\PS> $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();

PS C:\ps-test> $m.goodbye("Jane")
Goodbye, Jane

PS C:\ps-test> $m.hello("Manoj")
Hello, Manoj

PS C:\ps-test> goodbye Jane
Goodbye, Jane

PS C:\ps-test> hello Manoj
Hello, Manoj

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

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

두 번째 명령은 $m 변수의 값을 표시하려고 시도하지만 내용이 나타나지 않습니다.

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

네 번째 명령과 다섯 번째 명령은 스크립트 메서드 형식을 사용하여 Hello 및 Goodbye 함수를 호출합니다. 
 
여섯 번째 명령과 일곱 번째 명령은 함수 이름과 매개 변수 값을 지정하여 함수를 호출합니다.





예 6

C:\PS>new-module -scriptblock {function SayHello {"Hello, World!"}; SayHello} -returnResult

Hello, World!

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

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





참고 항목

개념

Get-Module
Import-Module
Remove-Module
Export-ModuleMember
about_Modules