TOPIC
    about_Properties

SHORT DESCRIPTION
    Describes how to use object properties in Windows PowerShell. 


LONG DESCRIPTION
    Windows PowerShell uses structured collections of information called
    objects to represent the items in data stores or the state of the computer.
    Typically, you work with object that are part of the Microsoft .NET
    Framework, but you can also create custom objects in Windows PowerShell.


    The association between an item and its object is very close. When you
    change an object, you change the item that it represents. For example,
    when you get a file in Windows PowerShell, you do not get the actual file.
    Instead, you get a FileInfo object that represents the file. When you 
    change the FileInfo object, the file changes too.


    Most objects have properties. Properties are the data that is associated 
    with an object. This data describes the object. For example, a FileInfo 
    object has a property called Length that describes the size of the file 
    that is represented by the object.


  Object Properties

     To list the properties of an object, use the Get-Member cmdlet. For 
     example, to get the properties of a FileInfo object, use the Get-ChildItem 
     cmdlet to get the FileInfo object that represents a file. Then, use a 
     pipeline operator (|) to send the FileInfo object to Get-Member. The 
     following command gets the PowerShell.exe file and sends it to Get-Member. 
     The $Pshome automatic variable contains the path of the Windows PowerShell 
     installation directory.

         get-childitem $pshome\powershell.exe | get-member


     The output of the command lists the members of the FileInfo object. 
     Members include both properties and methods. When you work in 
     Windows PowerShell, you have access to all the members of the objects.


     To get only the properties of an object and not the methods, use the 
     MemberType parameter of the Get-Member cmdlet with a value of "property", 
     as shown in the following example.

         get-childitem $pshome\powershell.exe | get-member -membertype property

            TypeName: System.IO.FileInfo
        
         Name              MemberType Definition
         ----              ---------- ----------
         Attributes        Property   System.IO.FileAttributes Attributes {get;set;}
         CreationTime      Property   System.DateTime CreationTime {get;set;}
         CreationTimeUtc   Property   System.DateTime CreationTimeUtc {get;set;}
         Directory         Property   System.IO.DirectoryInfo Directory {get;}
         DirectoryName     Property   System.String DirectoryName {get;}
         Exists            Property   System.Boolean Exists {get;}
         Extension         Property   System.String Extension {get;}
         FullName          Property   System.String FullName {get;}
         IsReadOnly        Property   System.Boolean IsReadOnly {get;set;}
         LastAccessTime    Property   System.DateTime LastAccessTime {get;set;}
         LastAccessTimeUtc Property   System.DateTime LastAccessTimeUtc {get;set;}
         LastWriteTime     Property   System.DateTime LastWriteTime {get;set;}
         LastWriteTimeUtc  Property   System.DateTime LastWriteTimeUtc {get;set;}
         Length            Property   System.Int64 Length {get;}
         Name              Property   System.String Name {get;}

     After you find the properties, you can use them in your Windows PowerShell 
     commands.


  Property Values
    
     Although every object of a specific type has the same properties, the 
     values of those properties describe the particular object. For example, 
     every FileInfo object has a CreationTime property, but the value of that
     property differs for each file.


     The most common way to get the values of the properties of an object is to 
     use the dot method. Type a reference to the object, such as a variable 
     that contains the object, or a command that gets the object. Then, type a 
     dot (.) followed by the property name.


     For example, the following command displays the value of the CreationTime 
     property of the PowerShell.exe file. The Get-ChildItem command returns a 
     FileInfo object that represents the PowerShell.exe file. The command is 
     enclosed in parentheses to make sure that it is executed before any 
     properties are accessed. The Get-ChildItem command is followed by a dot 
     and the name of the CreationTime property, as follows:

         C:\PS> (Get-ChildItem $pshome\powershell.exe).creationtime
         Tuesday, March 18, 2008 12:07:52 AM


     You can also save an object in a variable and then get its properties by 
     using the dot method, as shown in the following example:

         C:\PS> $a = Get-ChildItem $pshome\powershell.exe
         C:\PS> $a.CreationTime
         Tuesday, March 18, 2008 12:07:52 AM


     You can also use the Select-Object and Format-List cmdlets to display the 
     property values of an object. Select-Object and Format-List each have a 
     Property parameter. You can use the Property parameter to specify one or 
     more properties and their values. Or, you can use the wildcard 
     character (*) to represent all the properties.


     For example, the following command displays the values of all the 
     properties of the PowerShell.exe file.  
 
 
         C:\PS> Get-ChildItem $pshome\powershell.exe | Format-List -property *

         PSPath            : Microsoft.PowerShell.Core\FileSystem::C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe
         PSParentPath      : Microsoft.PowerShell.Core\FileSystem::C:\Windows\system32\WindowsPowerShell\v1.0
         PSChildName       : powershell.exe
         PSDrive           : C
         PSProvider        : Microsoft.PowerShell.Core\FileSystem
         PSIsContainer     : False
         VersionInfo       : File:             C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe
                             InternalName:     POWERSHELL
                             OriginalFilename: PowerShell.EXE.MUI
                             File Version:      6.1.6570.1 (fbl_srv_powershell(nigels).070711-0102)
                             FileDescription:  PowerShell.EXE
                             Product:          Microsoft® Windows® Operating System
                             ProductVersion:   6.1.6570.1
                             Debug:            False
                             Patched:          False
                             PreRelease:       False
                             PrivateBuild:     True
                             SpecialBuild:     False
                             Language:         English (United States)

         BaseName          : powershell
         Mode              : -a---
         Name              : powershell.exe
         Length            : 160256
         DirectoryName     : C:\Windows\system32\WindowsPowerShell\v1.0
         Directory         : C:\Windows\system32\WindowsPowerShell\v1.0
         IsReadOnly        : False
         Exists            : True
         FullName          : C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe
         Extension         : .exe
         CreationTime      : 3/18/2008 12:07:52 AM
         CreationTimeUtc   : 3/18/2008 7:07:52 AM
         LastAccessTime    : 3/19/2008 8:13:58 AM
         LastAccessTimeUtc : 3/19/2008 3:13:58 PM
         LastWriteTime     : 3/18/2008 12:07:52 AM
         LastWriteTimeUtc  : 3/18/2008 7:07:52 AM
         Attributes        : Archive
        

SEE ALSO
    about_Objects
    Get-Member
    Select-Object
    Format-List