2013-08-02 49 views
6

在您回答之前仔細閱讀!我想投一個整數到枚舉類型其中整數值實際上沒有在枚舉中定義。在VB.Net中,可以使用DirectCast將任何整數直接轉換爲基於整數的枚舉類型。有什麼方法可以在PowerShell中完成本地化?如何在PowerShell中將整數強制轉換爲枚舉類型?

我需要爲了調用一個方法的Office互操作對象上做到這一點在PowerShell中(Access.Application.SysCmd),它接受一個枚舉值作爲第一個參數(AcSysCmdAction),但如果實際值我需要通過(603無證的出口到accde行動)不包括在PIA枚舉定義中。 PowerShell的內置類型轉換會導致它將數字或字符串轉換爲適用的枚舉類型,但不會強制不在枚舉中的int值。相反,它會拋出無效的轉換異常。現在我正在使用一個動態編譯的ScriptControl,它通過VBScript調用SysCmd,但如果可能的話,我想保留所有的PowerShell。

+1

42!哦,等一下,讓我真的讀這個... – Jiminion

回答

6

你可以調用Enum類的ToObject方法:

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

嗯,我只是想出了一個辦法。在PowerShell中,它看起來枚舉對象有一個名爲「value__」的屬性,可以直接設置爲任何值!

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