2014-12-10 2 views
1

Я использую следующую функцию, чтобы узнать, является ли выпуск Major, Patch или Invalid.Как вернуть выход как enum в powershell v3?

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") 

Надеюсь, перечисление может иметь правильный выбор, а не строку. Как отправить перечисление в качестве выходного результата и сравнить его в PowerShell

ответ

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 
Смежные вопросы