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