Share via


New-Module

메모리에만 존재하는 새 동적 모듈을 만듭니다.

Syntax

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-ModuleGet-Module 사용할 수 있도록 할 수 있음을 보여 줍니다.

New-Module 는 cmdlet에 파이프되는 모듈 개체를 Import-Module 만듭니다. NameNew-Module 매개 변수는 모듈에 친숙한 이름을 할당합니다. Import-Module 기본적으로 개체를 반환하지 않으므로 이 명령의 출력은 없습니다. Get-ModuleGreetingModule을 현재 세션으로 가져왔습니다.

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 두 개의 함수를 사용하여 동적 모듈을 만들고 . HelloGoodbye 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 참조하세요.

Type:Object[]
Aliases:Args
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AsCustomObject

이 cmdlet은 동적 모듈을 나타내는 사용자 지정 개체를 반환합니다. 모듈 멤버는 사용자 지정 개체의 스크립트 메서드로 구현되지만 세션으로 가져오지 않습니다. 사용자 지정 개체를 변수에 저장하고 점 표기법을 사용하여 멤버를 호출할 수 있습니다.

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Cmdlet

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

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

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Function

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

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Name

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

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

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ReturnResult

이 cmdlet이 스크립트 블록을 실행하고 모듈 개체를 반환하는 대신 스크립트 블록 결과를 반환한다는 것을 나타냅니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ScriptBlock

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

Type:ScriptBlock
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

입력

String

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

출력

PSModuleInfo

이 cmdlet은 기본적으로 PSModuleInfo 개체를 생성합니다.

PSCustomObject

AsCustomObject 매개 변수를 사용하면 PSCustomObject 개체가 생성됩니다.

Object

ReturnResult 매개 변수를 사용하는 경우 이 cmdlet은 동적 모듈에서 스크립트 블록을 평가한 결과를 반환합니다.

참고

Windows PowerShell에는 다음 별칭이 포함됩니다.New-Module

  • nmo

별칭으로 참조할 New-Module 수도 있습니다. nmo 자세한 내용은 about_Aliases를 참조하세요.