如何在PowerShell中将整数强制转换为枚举类型?

时间:2013-08-02 18:25:21

标签: powershell casting enums com-interop

在回答之前仔细阅读!我想将一个整数转换为枚举类型,其中整数值实际上没有在枚举中定义。在VB.Net中,可以使用DirectCast直接将任何整数转换为基于整数的枚举类型。有没有办法在PowerShell中本地完成此操作?

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

2 个答案:

答案 0 :(得分:7)

您可以调用Enum班级的ToObject方法:

$day = [Enum]::ToObject([DayOfWeek], 90) 

答案 1 :(得分:2)

嗯,我刚想出办法。在PowerShell中,看起来enum对象有一个名为“value__”的属性,可以直接设置为任何值!

#Create a variable with the desired enum type
$ops = [System.Text.RegularExpressions.RegexOptions]0
#Directly set the value__ property
$ops.value__ = 3450432