Поделиться через


about_Variables

Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0

РАЗДЕЛ

about_Variables

КРАТКОЕ ОПИСАНИЕ

В этом разделе описывается, как переменные хранят значения, которые могут использоваться в Windows PowerShell®.

ПОДРОБНОЕ ОПИСАНИЕ

Вы можете хранить все типы значений в переменных Windows PowerShell. Обычно они используются для хранения результатов команд и элементов, применяемых в командах и выражениях, таких как имена, пути, параметры и значения.

Переменная — это единица памяти, в которой хранятся значения. В Windows PowerShell переменные представлены в виде текстовых строк, которые начинаются со знака доллара ($), например $a, $process и $my_var.

Имена переменных не учитывают регистр. Имена переменных могут содержать пробелы и специальные символы, но их трудно использовать и следует избегать.

В Windows PowerShell существует несколько различных типов переменных.

Созданные пользователем переменные:

эти переменные создаются и настраиваются пользователем. По умолчанию переменные, которые создаются в командной строке Windows PowerShell, существуют, только когда окно Windows PowerShell открыто, и они будут потеряны при закрытии окна. Чтобы сохранить переменную, добавьте ее в профиль Windows PowerShell. Кроме того, можно создать переменные в скриптах с глобальной, локальной областью или областью скрипта.

Автоматические переменные:

в этих переменных хранится состояние Windows PowerShell. Они создаются Windows PowerShell, а Windows PowerShell изменяет их значения для обеспечения их точности. Пользователи не могут изменять значения этих переменных. Например, в переменной $PSHome хранится путь к каталогу установки Windows PowerShell.

Дополнительные сведения, список и описание автоматических переменных см. в разделе about_Automatic_Variables.

Переменные настроек:

в этих переменных хранятся пользовательские настройки для Windows PowerShell. Они создаются Windows PowerShell и заполняются значениями по умолчанию. Пользователи могут изменять значения этих переменных. Например, переменная $MaximumHistoryCount определяет максимальное число записей в журнале сеанса.

Дополнительные сведения, список и описание переменных настроек см. в разделе about_Preference_Variables.

РАБОТА С ПЕРЕМЕННЫМИ

Чтобы создать новую переменную, используйте оператор присваивания для указания значения переменной. Необязательно объявлять переменную перед ее использованием. Значение по умолчанию всех переменных — $null.

Например:

        PS> $MyVariable = 1, 2, 3
        PS> $path = "C:\Windows\System32"

Переменные очень полезны для хранения результатов команд.

Например:

          
        PS> $processes = Get-Process         
     
        PS> $Today = (Get-Date).date

Чтобы отобразить значение переменной, введите ее имя, добавив в начало знак доллара ($).

Например:

        PS> $MyVariable
        1
        2
        3
        PS> $Today
        Thursday, September 03, 2009 12:00:00 AM

Чтобы изменить переменную, присвойте ей новое значение.

Следующие примеры отображают значение переменной $MyVariable, изменяют значение переменной, а затем отображают новое значение.

        PS> $MyVariable
        1
        2
        3
        PS> $MyVariable = "The green cat."
        PS> $MyVariable
        The green cat.

Чтобы удалить значение переменной, используйте командлет Clear-Variable или измените значение на $null.

        PS> Clear-Variable -name MyVariable  

        -or-

        PS> $MyVariable = $null

Чтобы удалить переменную, используйте командлеты Remove-Variable или Remove-Item. (Они обсуждаются далее в этом разделе.)

       PS> remove-variable -name MyVariable

       PS> remove-item -path variable:\myvariable

Чтобы получить список всех переменных в сеансе Windows PowerShell, введите:

       get-variable

ТИПЫ ПЕРЕМЕННЫХ

В переменной можно хранить объект любого типа, в том числе целые числа, строки, массивы, хэш-таблицы и объекты, представляющие процессы, службы, журналы событий и компьютеры.

Переменные Windows PowerShell "слабо типизированы", т. е. они не ограничиваются конкретным типом объекта. Одна переменная может содержать коллекцию ("массив") различных типов объектов одновременно.

Тип данных переменной, а именно тип .NET Framework, определяется типами .NET значений переменной.

Например:

        PS> $a = 12     (System.Int32)
        
        PS> $a = "Word" (System.String)

        PS> $a = 12, "Word" (System.Int32, System.String)

        PS> $a = dir C:\Windows\System32  (Files and folders)

Вы можете использовать атрибут типа и нотацию приведения, чтобы переменная могла содержать только объекты заданного типа или объекты, которые можно преобразовать в этот тип. При попытке присвоить значение другого типа Windows PowerShell пытается преобразовать значение в этот тип. В противном случае оператор присваивания завершается ошибкой.

Чтобы использовать нотацию, введите имя типа, заключенное в квадратные скобки, перед именем переменной (в левой части оператора присваивания). Следующий пример создает переменную $number, которая может содержать только целые числа, переменную $words, которая может содержать только строки, и переменную $dates, которая может содержать только объекты типа DateTime.

        PS> [int]$number = 8
        PS> $a = "12345" (The string is converted to an integer.)
        PS> $a = "Hello"
        Cannot convert value "Hello" to type "System.Int32". Error: "Input string was not in a correct format."
        At line:1 char:3
        + $a <<<<  = "Hello"
            + CategoryInfo          : MetadataError: (:) [], ArgumentTransformationMetadataException
            + FullyQualifiedErrorId : RuntimeException
        PS> [string]$words = "Hello"

        PS> $words = 2   (The integer is converted to a string.)

        PS> $words + 10  (The strings are concatenated.)
        210              
        PS> [datetime] $dates = "09/12/91" (The string is converted to a DateTime object.)

        PS> $dates
        Thursday, September 12, 1991 12:00:00 AM

        PS> $dates = 10  (The integer is converted to a DateTime object.)
        PS> $dates
        Monday, January 01, 0001 12:00:00 AM
                

ИСПОЛЬЗОВАНИЕ ПЕРЕМЕННЫХ В КОМАНДАХ И ВЫРАЖЕНИЯХ

Чтобы использовать переменную в команде или выражении, введите имя переменной с предшествующим знаком доллара ($).

Если переменной имя (и знак доллара) не заключены в кавычки или заключены в двойные кавычки (""), в команде или выражении используется значение переменной.

Если имя переменной (и знак доллара) заключено в одинарные кавычки ('), в выражении используется имя переменной.

Например, первая команда получает значение переменной $profile, а именно путь к файлу профиля пользователя Windows PowerShell в консоли Windows PowerShell. Вторая команда открывает файл в Блокноте, а третья и четвертая команды используют имя переменной в выражении.

        PS> $profile
        C:\Documents and Settings\User01\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
        PS> notepad $profile 
        - or -
        PS> notepad "$profile"
        C:\Documents and Settings\User01\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
        PS> '$profile'
        $profile
        PS> 'Use the $profile variable.'
        Use the $profile variable.

Дополнительные сведения об использовании кавычек в Windows PowerShell см. в разделе about_Quoting_Rules.

ИМЕНА ПЕРЕМЕННЫХ, КОТОРЫЕ СОДЕРЖАТ СПЕЦИАЛЬНЫЕ СИМВОЛЫ

Имена переменных начинаются со знака доллара. Они могут содержать буквы, цифры и специальные символы. Длина имени переменной ограничена только объемом доступной памяти.

Когда это возможно, имена переменных должны содержать только буквенно-цифровые символы и символ подчеркивания (_). Имена переменных могут содержать пробелы и специальные символы, но их трудно использовать и следует избегать.

Чтобы создать или показать имя переменной, которое содержит пробелы или специальные символы, заключите имя переменной в фигурные скобки. Тогда Windows PowerShell буквально интерпретирует символы в имени переменной.

Например, следующая команда создает и отображает переменную с именем "save-items".

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

Следующая команда возвращает дочерние элементы в каталоге, представленном переменной среды "ProgramFiles(x86)".

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

Для указания ссылки на имя переменной, которая содержит фигурные скобки, заключите имя в фигурные скобки и используйте escape-символ обратного апострофа. Например, чтобы создать переменную с именем "this{value}is" со значением 1, введите:

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

ПЕРЕМЕННЫЕ И ОБЛАСТИ

По умолчанию переменные доступны только в области, в которой они были созданы.

Например, переменная, которая создается в функции, доступна только в функции. Переменная, которая создается в скрипте, доступна только в скрипте (если не указать имя скрипта через точку, что добавляет его в текущую область).

Чтобы изменить область переменной по умолчанию, можно использовать модификатор области. Следующее выражение создает переменную с именем "Computers". Переменная имеет глобальную область, даже если она создается в скрипте или функции.

            $global:computers = "Server01"

Дополнительные сведения см. в разделе about_Scopes.

СОХРАНЕНИЕ ПЕРЕМЕННЫХ

Переменные доступны только в сеансе, в котором они созданы. Они будут потеряны при закрытии сеанса.

Для создания в каждом открываемом сеансе Windows PowerShell добавьте переменную в профиль Windows PowerShell.

Например, чтобы изменить значение переменной $VerbosePreference в каждом сеансе Windows PowerShell, добавьте следующую команду в профиль Windows PowerShell.

  $VerbosePreference = "Continue"

Эту команду можно добавить в профиль, открыв файл профиля в текстовом редакторе, таком как Блокнот. Дополнительные сведения о профилях Windows PowerShell см. в разделе about_profiles.

ДИСК "VARIABLE:"

Поставщик переменных Windows PowerShell диск "Variable:", который выглядит и работает как диск файловой системы, но содержит переменные сеанса и соответствующие значения.

Для изменения диска "Variable:" введите следующую команду:

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

Для получения списка элементов (переменных) на диске "Variable:" используйте командлет Get-Item или Get-ChildItem. Например:

         get-childitem variable:
         (or "dir" or "ls")

Чтобы получить значение определенной переменной, используйте нотацию файловой системы для указания диска и переменной. Например, чтобы получить автоматическую переменную $PSCulture, используйте следующую команду.

         get-item variable:\PSCulture      

         Name                           Value
         ----                           -----
         PSCulture                      en-US        

Для получения дополнительных сведений о диске "Variable:" и поставщике переменных Windows PowerShell введите команду "get-help variable".

КОМАНДЛЕТЫ ПЕРЕМЕННЫХ

Windows PowerShell содержит набор командлетов, предназначенных для управления переменными.

         Cmdlet Name           Description
         -----------           -----------

         Clear-Variable        Deletes the value of a variable.
         Get-Variable          Gets the variables in the current console.
         New-Variable          Creates a new variable.
         Remove-Variable       Deletes a variable and its value.
         Set-Variable          Changes the value of a variable.

Чтобы получить справку для этих командлетов, введите: "Get-Help <имя_командлета>".

СМ. ТАКЖЕ

about_Automatic_Variables

about_Environment_Variables

about_Preference_Variables

about_Profiles

about_Quoting_Rules

about_Scopes