TOPIC
    about_Variables

SHORT DESCRIPTION
    Describes how variables store values that can be used in Windows 
    PowerShell.    

LONG DESCRIPTION
    A variable is a unit of memory in which values are stored. In Windows
    PowerShell, variables are represented by single-word text strings that 
    begin with the dollar sign ($), such as $a, $process, or 
    $my_var.

    There are several different types of variables in Windows PowerShell.

    -- User-created variables: User-created variables are created and 
       maintained by the user. By default, the variables that you create at
       the Windows PowerShell command line exist only while the Windows 
       PowerShell window is open, and they are lost when you close the window.
       To save a variable, add it to your Windows PowerShell profile. You can 
       also create variables in scripts with global, script, or local scope.    

    -- Automatic variables: Automatic variables store the state of 
       Windows PowerShell. These variables are created by Windows PowerShell, 
       and Windows PowerShell changes their values as required to maintain 
       their accuracy. Users cannot change the value of these variables.
       For example, the $PSHome variable stores the path to the Windows 
       PowerShell installation directory. For more information, a list, and
       a description of the automatic variables, see about_Automatic_Variables.

    -- Preference variables: Preference variables store user preferences for
       Windows PowerShell. These variables are created by Windows PowerShell
       and are populated with default values. Users can change the values of 
       these variables. For example, MaximumHistoryCount determines the maximum
       number of entries in the session history. For more information, a list,
       and a description of the preference variables, see 
       about_Preference_Variables.

    
 WORKING WITH VARIABLES

    To list all of the variables in your Windows PowerShell session, type:

       get-variable

    To display the value of any variable, type the name of the variable,
    preceded by a dollar sign ($). Windows PowerShell responds by displaying
    its value.

       $<variable-name>

    For example:

        PS> $pshome
        C:\Windows\System32\WindowsPowerShell\v1.0


    To create a new variable or to change the value of a variable, use an
    assignment statement in the following format:

        $<variable> = <value>

    For example:

        PS> $my-variable = 1, 2, 3

        or

        PS> $VerbosePreference = "Continue"

    To get an object that represents the variable, use a Get-Variable
    command, such as:

        PS> get-variable pid


    To use a variable, type the variable name, including the dollar sign ($),
    in a command or expression. If the command or expression is not enclosed
    in quotation marks or if it is enclosed in double-quotation marks ("), the
    value of the variable is used in the command or expression. If the command 
    is enclosed in single quotation marks, ('), the variable name is used in 
    the expression.

    For example, the first command finds the value of the $profile variable,
    which is the path to the Windows PowerShell user profile file. The 
    second command opens the file in Notepad.

        PS> $profile
        C:\Documents and Settings\User01\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

        PS> Notepad $profile


    You can store any type of object in a variable, including integers, 
    strings, arrays, and hash tables, objects that represent processes, 
    services, event logs, and computers.    
  

  SAVING VARIABLES
      Variables that you create are available only in the session in which
      you create them. They are lost when you close your session.
     
      To save a variable, add the variable to your Windows PowerShell profile.
      Variables in a profile are added to every Windows PowerShell session
      that you open.

      For example, to change the value of the $VerbosePreference variable in
      every Windows PowerShell session, add the following command to your Windows
      PowerShell profile.

	  $VerbosePreference = "Continue"

      You can add this command to your profile by opening the profile file in a
      text editor, such as Notepad, or you can use an Add-Content command, like
      the following one.

      The following command adds the new value for the $VerbosePreference variable
      to the CurrentUser,AllHosts profile.

	  add-content -path $profile.CurrentUserAllHosts -value '$VerbosePreference = "Continue"'

      For more information about Windows PowerShell profiles, see about_profiles.


 VARIABLE NAMES WITH SPECIAL CHARACTERS

    You can use braces to force Windows PowerShell to interpret a
    variable name literally. This is especially helpful when creating
    or referring to a variable name that includes special characters,
    such as dashes, periods, colons, and parentheses. 

    To create a variable name that includes a hyphen, enclose the
    variable name in braces. The following command creates a variable
    named "save-items".

        C:\PS> ${save-items} = "a", "b", "c"
        C:\PS>${save-items}
        a
        b
        c

    To refer to a variable name that includes parentheses, enclose
    the variable name in braces. 

    For example, the following command gets the child items in the
    directory stores in the "ProgramFiles(x86)" environment variable.

        C:\PS> Get-childitem ${env:ProgramFiles(x86)}


    To refer to a variable name that includes braces, enclose the
    variable name in braces, and use the backtick (escape) character
    to escape the braces. For example, to create a variable
    named "this{value}is" with a value of 1, type: 

        C:\PS> ${this`{value`}is} = 1
        C:\PS> ${this`{value`}is}
        1


 THE VARIABLE: DRIVE

     Windows PowerShell includes a Variable: drive that looks and acts like
     a file system drive, but it contains the variables in your session. 

     To change to the variable drive, type:

        set-location variable:
        
         (or "cd variable:")

     
     When in the Variable drive, to list the items (variables) in the
     drive, use the Get-ChildItem cmdlet. For example:

         get-childitem

         (or "dir" or "ls")
     
     For more information about the Variable: drive and the Windows
     PowerShell Variable provider, type:

         get-help variable


SEE ALSO
    about_Automatic_Variables
    about_Environment_Variables
    about_Preference_Variables
    about_Scopes

