在回答之前仔细阅读!我想将一个整数转换为枚举类型,其中整数值实际上没有在枚举中定义。在VB.Net中,可以使用DirectCast直接将任何整数转换为基于整数的枚举类型。有没有办法在PowerShell中本地完成此操作?
我需要在PowerShell中执行此操作,以便在Office Interop对象(Access.Application.SysCmd)上调用方法,该对象将枚举值作为其第一个参数(AcSysCmdAction),但实际值为我需要传递(603用于未记录的导出到accde操作)不包含在PIA枚举定义中。 PowerShell的内置类型转换使它将数字或字符串转换为适用的枚举类型,但它不会强制枚举不在枚举中的int值。相反,它会抛出无效的转换异常。现在我正在使用一个动态编译的ScriptControl,它通过VBScript调用SysCmd,但是如果可能的话我想把所有内容保存在PowerShell中。
答案 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