Listing enumeration type values
This post has an update here.
A little utility function I wrote to automate the process of listing enumeration type names and values:
function Get-EnumValues{   
    [enum]::getvalues($args[0]) | select @{n="Name";e={$_}},@{n="Value";e={$_.value__}} | ft -auto    
} 
PS > Get-EnumValues System.ConsoleColor
       Name        Value   
       ----           -----    
            Black     0    
       DarkBlue     1    
    DarkGreen     2    
      DarkCyan     3    
       DarkRed     4    
DarkMagenta     5    
   DarkYellow     6    
            Gray     7    
     DarkGray     8    
             Blue     9    
          Green    10    
            Cyan    11    
             Red    12    
      Magenta    13    
         Yellow    14    
         White    15 
PS > Get-EnumValues System.IO.FileAttributes
             Name           Value   
             ----               -----    
               ReadOnly     1    
                  Hidden     2    
                  System     4    
               Directory    16    
                 Archive    32    
                  Device    64    
                 Normal   128    
            Temporary   256    
             SparseFile   512    
        ReparsePoint  1024    
          Compressed  2048    
                  Offline  4096    
NotContentIndexed  8192    
              Encrypted 16384 
PS > Get-EnumValues System.IO.FileAccess
     Name      Value   
     ----          -----    
        Read     1    
       Write     2    
ReadWrite     3 
PS > Get-EnumValues System.IO.FileOptions
          Name         Value   
          ----            -----    
                None     0    
         Encrypted    16384    
   DeleteOnClose   67108864    
  SequentialScan   134217728    
  RandomAccess   268435456    
    Asynchronous   1073741824    
   WriteThrough   -2147483648 
I used this code to test the Get-EnumValues function. It gets all enumeration types stored in the system namespace and list each one's values:
$e=[System.Reflection.Assembly]::LoadWithPartialName("System").gettypes() | where {$_.basetype.fullname -eq "system.enum"}   
    
$e | foreach {     
    write-host "` --- [$_] ---";    
    Get-EnumValues $_;    
    read-host "Press any key to continue";    
}
 

 RSS Feed
 RSS Feed
2 comments:
this was very useful - thanks for sharing it
There is an update to this post at:
http://scriptolog.blogspot.com/2008/06/listing-enumeration-type-values-updated.html
-Shay
Post a Comment