2016-10-31 10 views
6

모듈 내에 enum 형식이 정의되어 있습니다. 모듈이로드되면 외부에서 액세스 할 수 있도록 내보내려면 어떻게합니까?내보내기 모듈에서 Powershell 5 열거 형 선언을 내 보냅니다.

enum fruits { 
apple 
pie 
} 

function new-fruit { 
    Param(
     [fruits]$myfruit 
    ) 
    write-host $myfruit 
} 

내 고급 기능을 대신 열거를 사용할 수있는 경우 작동 ValidateSet의 열거 필요하지만 그렇지 않은 경우 실패합니다.

업데이트하십시오 PS1과로 분리 (ScriptsToProcess)을 작품 도트 소싱, 그러나 나는 청소기 방법이 있다고 할 것이다.

+0

참조 [방법에서 클래스를 내보내는 파워 쉘 v5 모듈] (//stackoverflow.com/a/3 8701492) - 가져 오기 후에'module moduleName 사용 '을 추가하십시오 – wOxxOm

답변

3

using module ... 명령을 사용하여 모듈을로드 한 후 열거 형에 액세스 할 수 있습니다. 예를 들어

:

MyModule.psm1

enum MyPriority { 
    Low = 0 
    Medium = 1 
    high = 2 
} 
function Set-Priority { 
    param(
    [Parameter(HelpMessage = 'Priority')] [MyPriority] $priority 
) 
    Write-Host $Priority 
} 
Export-ModuleMember -function Set-Priority 

만들기 : PowerShell에서 다음

New-ModuleManifest MyModule.psd1 -RootModule 'MyModule.psm1' -FunctionsToExport '*' 

...

Import-Module .\MyModule\MyModule.psd1 
PS C:\Scripts\MyModule> [MyPriority] $p = [MyPriority ]::High 
Unable to find type [MyPriority]. 
At line:1 char:1 
+ [MyPriority] $p = [MyPriority ]::High 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (MyPriority:TypeName) [], RuntimeException 
    + FullyQualifiedErrorId : TypeNotFound 

PS C:\Scripts\MyModule> using module .\MyModule.psd1 
PS C:\Scripts\MyModule> [MyPriority] $p = [MyPriority ]::High 
PS C:\Scripts\MyModule> $p 
high