我在一个模块中定义了一个枚举类型。一旦模块被加载,我如何导出它以便从外部访问?
enum fruits {
apple
pie
}
function new-fruit {
Param(
[fruits]$myfruit
)
write-host $myfruit
}
我的高级函数采用枚举而不是ValidateSet
,如果枚举可用,则该函数工作,但如果枚举不可用,则该函数失败。
**更新:**将其分离为ps1和点源(ScriptsToProcess)工作,但我希望有一个更干净的方法。
5条答案
按热度按时间gv8xihay1#
尝试从5.0.x上的嵌套模块(.psm1)使用/导出枚举时遇到了相同的问题。
通过使用
Add-Type
来使其工作:然后您应该能够使用
bqf10yzr2#
您可以在加载模块后使用
using module ...
命令访问枚举。例如:
MyModule.psm1
品牌:
在Powershell中…
5jvtdoz23#
当你在一个模块中获取类、枚举或任何.Net类型,并且你想导出它们时,你必须在你想导入它的脚本中使用
using
关键字,否则只有cmlet
会被导入。hl0ma9xz4#
我看到你的问题说你正在寻找一种比点源脚本或使用ScriptsToProcess更干净的方法,但这对我来说很有效。
第一步:
Enumerations.ps1
,并将该文件放在我的模块的根文件夹中。第二步
ScriptsToProcess
选项第三步
第四步
mm9b1k5b5#
这似乎是PowerShell 5.0.x版本中的一个问题。
我的问题是5.0.10105.0
但是,这在5.1.x版本中工作正常。