如何在powershell v3中将输出作为枚举返回?

时间:2014-12-10 06:35:14

标签: powershell powershell-v3.0

我正在使用以下功能来确定该版本是Major,Patch还是Invalid。

Function Compare-Version {

    [cmdletBinding()]
    Param (

        [version] $old,
        [Version] $New

    )

        If ( $New -le $Old  ) { return "Invalid" }
        ElseIf ( $new.Major -eq $Old.Major -And $New.Minor -gt $Old.Minor ) { return "Patch" }
        ElseIf ($new -gt $old) { return "Major" }

}

$TypeOfRelease = Compare-Version -Old "245.1" -New "246.1"

If ($TypeOfRelease -eq "Invalid" ) { "No operation"}
ElseIf ($TypeOfRelease -eq "Major") {"Change guid to support migration"}
Elseif ($TypeOfRelease -eq "Point") {"Just change the version don't upgrade GUID")

我希望枚举可以是正确的选择,而不是字符串。如何将enum作为输出结果发送并在powershell中进行比较

1 个答案:

答案 0 :(得分:4)

在PowerShell v5中,您可以直接声明枚举,例如:

enum VersionCompare { Invalid; Major; Patch }

在v3中,您需要使用Add-Type,例如:

PS> Add-Type -TypeDefinition 'public enum VersionCompare { Invalid, Major, Patch }'
PS> [VersionCompare]::Invalid
Invalid