7

回答前请仔细阅读!我想将整数转换为枚举类型,其中整数值实际上并未在 enum 中定义。在 VB.Net 中,可以使用 DirectCast 将任何整数直接转换为基于整数的枚举类型。有什么方法可以在 PowerShell 中本地完成此任务吗?

我需要在 PowerShell 中执行此操作,以便调用 Office Interop 对象 ( Access.Application.SysCmd ) 上的方法,该方法将枚举值作为其第一个参数 ( AcSysCmdAction ),但我需要传递的实际值 (603 for未记录的导出到 accde 操作)不包含在 PIA 枚举定义中。PowerShell 的内置类型转换使其将数字或字符串转换为适用的枚举类型,但它不会强制使用不在枚举中的 int 值。相反,它会引发无效的转换异常。现在我正在使用一个动态编译的 ScriptControl,它通过 VBScript 调用 SysCmd,但如果可能的话,我想把所有东西都保存在 PowerShell 中。

4

2 回答 2

8

你可以调用Enum类的ToObject方法:

$day = [Enum]::ToObject([DayOfWeek], 90) 
于 2013-08-03T06:08:48.030 回答
4

嗯,我只是想出了一个办法。在 PowerShell 中,枚举对象似乎有一个名为“value__”的属性,可以直接设置为任何值!

#Create a variable with the desired enum type
$ops = [System.Text.RegularExpressions.RegexOptions]0
#Directly set the value__ property
$ops.value__ = 3450432
于 2013-08-02T18:44:56.473 回答