14

モジュール内で定義された列挙型があります。モジュールがロードされたら、外部からアクセスできるようにエクスポートするにはどうすればよいですか?

enum fruits {
 apple
 pie
}

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

私の高度な関数は、ValidateSet列挙型が利用可能な場合は機能しますが、そうでない場合は失敗します。

更新: ps1 に分割してドット ソース化 (ScriptsToProcess) することもできますが、もっとクリーンな方法があればいいのにと思います。

4

4 に答える 4

8

コマンドを使用してモジュールをロードした後、列挙型にアクセスできます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

作る:

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

次に、Powershellで...

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
于 2016-11-01T16:37:40.777 に答える
2

モジュール内のクラス、列挙型、または任意の .Net タイプを取得し、それらをエクスポートする場合は、usingインポートするスクリプトでキーワードを使用する必要があります。そうcmletしないと、インポートされるだけです。

于 2018-12-13T16:56:59.933 に答える