6

モジュール内でenum型が定義されています。モジュールがロードされたら外部からアクセスできるようにエクスポートするにはどうすればいいですか?Export Powershell 5モジュールからのenum宣言

enum fruits { 
apple 
pie 
} 

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

私の高度な機能ではなく、列挙型が利用可能である場合に動作しますValidateSetの列挙がかかりますが、そうでない場合は失敗します。

更新:PS1とに分離 (ScriptsToProcess)、それを作品ドットソーシング、しかし私は、クリーンな方法があることを望むでしょう。

+0

がでクラスをエクスポートする方法[参照してください。 PowerShell 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 
関連する問題