РАЗДЕЛ
    about_assignment_operators

КРАТКОЕ ОПИСАНИЕ
    Описание использования операторов для присваивания значений 
    переменным.


ПОЛНОЕ ОПИСАНИЕ
    Операторы присваивания используются для назначения одного или 
    нескольких значений переменной. Они могут выполнять числовые 
    операции со значениями перед операцией назначения.


    Windows PowerShell поддерживает следующие операторы присваивания.


    Оператор  Описание  
    -------   -----------
    =         Назначает переменной указанное значение.

    +=        Увеличивает значение переменной на указанное значение или 
              добавляет указанное значение к текущему значению переменной.
 
    -=        Вычитает указанное значение из текущего значения переменной.
 
    *=        Умножает значение переменной на указанное значение или 
              добавляет указанное значение к текущему значению переменной.
 
    /=        Делит значение переменной на указанное значение.
 
    %=        Делит значение переменной на указанное значение и назначает 
              переменной остаток от деления (также известный как "модуль").

    ++        Увеличивает значение переменной, назначаемого свойства или 
              элемента массива на 1.

    --        Уменьшает значение переменной, назначаемого свойства 
              или элемента массива на 1.
 

  СИНТАКСИС
    Операторы присваивания используются со следующим синтаксисом:


        <выражение_назначения> <оператор_присваивания> <значение>


    В выражениях назначения могут использоваться переменные и свойства. В 
    качестве значения может использоваться одиночное значение, массив 
    значений, команда, выражение или инструкция.


    Операторы инкремента и декремента являются унарными операторами. 
    Для каждого из них предусмотрены префиксная и постфиксная версии.


        <выражение_назначения><оператор>
        <оператор><выражение_назначения>


    Выражение назначения должно быть числом или может быть преобразовано в 
    число.


  ПРИСВАИВАНИЕ ЗНАЧЕНИЙ
    Переменные представляют собой именованные области памяти, в 
    которых хранятся значения. Можно сохранять значения в переменных 
    с помощью оператора присваивания (=). Новое значение может 
    заменить текущее значение переменной или может быть добавлено к 
    текущему значению переменной.


    Базовым оператором присваивания является знак равенства (=)(ASCII 61). 
    Например, следующая инструкция присваивает значение "Windows PowerShell" 
    переменной $MyShell.


        $MyShell = "Windows PowerShell" 


    При попытке присвоить значение переменной Windows PowerShell, 
    которой пока не существует, переменная будет создана. Например, 
    первый из двух следующих операторов присваивания создает 
    переменную $a и присваивает ей значение 6. Второй оператор 
    присваивания присваивает переменной $a значение 12. Первая инструкция 
    создает новую переменную. Вторая инструкция только изменяет ее значение.


        $a = 6
        $a = 12

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


        $a = get-process
        $a += get-service
        $a += "string"
        $a += 12
 

    Поскольку оператор присваивания (=) обладает более низким 
    приоритетом, чем оператор конвейера (|), для присваивания результата 
    оператора конвейера переменной не требуются скобки. Например, 
    следующая команда выполняет сортировку служб на компьютере и затем 
    заносит список отсортированных служб в переменную $a.


        $a = get-service | sort name


    Кроме того, переменной можно присвоить значение, созданное в 
    результате выполнения инструкции, как показано в следующем примере. 


        $a = if ($b -lt 0) { 0 } else { $b }


    В этом примере переменной $a присваивается значение 0, если 
    значение $b меньше 0. Если значение $b не меньше нуля, переменной $a 
    присваивается значение переменной $b. 

 

  ОПЕРАТОР ПРИСВАИВАНИЯ (=)
    Оператор присваивания (=) используются для присваивания значений 
    переменным. Если у переменной уже есть значение, оператор 
    присваивания (=) заменяет текущее значение переменной без 
    предупреждения.


    Например, следующая инструкция присваивает переменной $a целочисленное 
    значение 6.


        $a = 6 

    Для присвоения переменной значения строки заключите значение строки в 
    двойные кавычки, как показано ниже.


        $a = "футбол" 


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


        $a= "яблоко", "апельсин", "лимон", "виноград" 

    Для присвоения переменной значения хэш-таблицы используйте стандартный 
    синтаксис хэш-таблицы в Windows PowerShell. Введите знак (@), за 
    которым следуют пары "ключ-значение", разделенные точками с запятой (;) 
    и заключенные в фигурные скобки ({ }). Например, чтобы присвоить 
    переменной $a значение хэш-таблицы, введите следующую команду.


        $a = @{один=1; два=2; три=3} 


    Для присваивания переменной шестнадцатеричных значений укажите перед 
    значениями префикс "0x". Оболочка Windows PowerShell преобразует 
    шестнадцатеричное значение (0x10) в десятичное (в данном случае - 16) и 
    присваивает это значение переменной $a. Например, чтобы присвоить 
    переменной $a значение 0x10, введите следующую команду.


        $a = 0x10 


    Для присвоения переменной значения в экспоненциальной форме, укажите 
    мантиссу, букву "e", а далее степень, в которую нужно возвести 10. 
    Например, чтобы присвоить переменной $a значение 3,1415, умноженное 
    на 1 000, введите следующую команду.


        $a = 3.1415e3 


    Оболочка Windows PowerShell также может преобразовывать килобайты 
    (КБ), мегабайты (МБ) и гигабайты (ГБ) в байты. Например, чтобы 
    присвоить переменной $a значение 10 килобайт, введите следующую 
    команду.


        $a = 10kb


  ОПЕРАТОР СЛОЖЕНИЯ С ПРИСВАИВАНИЕМ (+=)
    Оператор сложения с присваиванием (+=) либо увеличивает значение 
    переменной, либо добавляет указанное значение к текущему значению 
    переменной. Действие зависит от того, принадлежит ли переменная к 
    числовому или строковому типу и содержит ли переменная скалярное 
    значение (одно значение) или коллекцию (несколько значений).


    Оператор += объединяет две операции. Сперва он выполняет операцию 
    сложения, а затем - операцию присваивания. Таким образом, следующие 
    инструкции будут эквивалентны.


        $a += 2
        $a = ($a + 2)

 
    Если переменная содержит одно числовое значение, оператор += 
    увеличивает текущее значение переменной на число, указанное справа от 
    оператора. Затем оператор присваивает переменной результирующее значение.
    В следующем примере показано, как использовать оператор += для 
    увеличения значения переменной.


        C:\PS> $a = 4
        C:\PS> $a += 2
        C:\PS> $a
        6
 

    Если переменная имеет строковое значение, значение, указанное 
    справа от оператора, будет добавлено к строке. 


        C:\PS> $a = "Windows"
        C:\PS> $a +- " PowerShell"
        C:\PS> $a
        Windows PowerShell 


    Если значением переменной является массив, значение, указанное 
    справа от оператора +=, будет добавлено в массив. Если тип 
    массива не указан явным образом с помощью операции приведения к 
    типу, можно добавлять в массив значения любого типа, например:


        C:\PS> $a = 1,2,3
        C:\PS> $a += 2
        C:\PS> $a
        1
        2
        3
        2
        C:\PS> $a += "String"
        C:\PS> $a
        1
        2
        3
        2
        String

 
    Если значением переменной является хэш-таблица, значение, 
    указанное справа от оператора +=, будет добавлено в хэш-таблицу. 
    Однако, поскольку единственным типом переменных, которые можно 
    добавлять к хэш-таблице, является другая хэш-таблица, попытки добавить 
    значения любого другого типа закончатся неудачей.


    Например, следующая команда присваивает переменной $a значение 
    хэш-таблицы.
    Затем для добавления другой хэш-таблицы к существующей хэш-таблице 
    используется оператор +=, в результате в существующую хэш-таблицу 
    добавляется новая пара "ключ-значение". Эта команда завершается 
    успешно, о чем свидетельствуют выходные данные.


        C:\PS> $a = @{a = 1; b = 2; c = 3}
        C:\PS> $a += @{mode = "write"}
        C:\PS> $a
        Имя                           Значение
        ----                           -----
        a                              1
        b                              2
        mode                           write
        c                              3


    Следующая команда пытается добавить целое число (1) к хэш-таблице в 
    переменной $a. Она завершается неудачей.


        C:\PS> $a = @{a = 1; b = 2; c = 3}
        C:\PS> $a += 1
        Можно добавить хеш-таблицу только к другой хеш-таблице.
        В строке:1 знак:6
        + $a += <<<< 1


  ОПЕРАТОР ВЫЧИТАНИЯ С ПРИСВАИВАНИЕМ (-=)
    Оператор вычитания с присваиванием (-=) уменьшает значение 
    переменной на значение, указанное справа от оператора.
    Этот оператор не может использоваться со строковыми переменными, 
    он также не позволяет удалить элемент из коллекции.


    Оператор -= объединяет две операции. Сперва он выполняет операцию 
    вычитания, а затем - операцию присваивания. Таким образом, следующие 
    инструкции будут эквивалентны.


        $a -= 2
        $a = ($a - 2)

 
    В следующем примере показано, как использовать оператор -= для 
    уменьшения значения переменной.


        C:\PS> $a = 8
        C:\PS> $a -= 2
        C:\PS> $a
        6

 
    Оператор -= можно также использовать для уменьшения значения 
    члена числового массива. Для этого укажите индекс элемента 
    массива, значение которого нужно изменить. В следующем примере 
    значение третьего элемента массива (элемент 2) уменьшается на 1.


        C:\PS> $a = 1,2,3
        C:\PS> $a[2] -= 1.
        C:\PS> $a
        1
        2
        2

 
    Нельзя использовать оператор -= для удаления значений переменной. Для 
    удаления всех значений, присвоенных переменной, используйте 
    командлеты Clear-Item и Clear-Variable, которые присваивают 
    переменной значение $null или "".


        $a = $null 


    Для удаления определенного значения из массива используйте синтаксис 
    описания массива, чтобы присвоить значение $null определенному элементу. 
    Например, следующая инструкция удаляет второе значение (индекс = 1) 
    из массива.



        C:\PS> $a = 1,2,3
        C:\PS> $a
        1
        2
        3

        C:\PS> $a[1] = $null
        C:\PS> $a
        1
        3
 

    Для удаления переменной используйте командлет Remove-Variable. 
    Этот метод удобен, если переменная явно преобразована к 
    определенному типу данных, а вам требуется нетипизированная 
    переменная. Следующая команда удаляет переменную $a.


        remove-variable a
 

  ОПЕРАТОР УМНОЖЕНИЯ С ПРИСВАИВАНИЕМ (*=) 
    Оператор умножения с присваиванием (*=) умножает числовое значение 
    или создает указанное число копий значения строки в переменной. 


    Если переменная содержит одно числовое значение, это значение 
    умножается на число, указанное справа от оператора. В следующем 
    примере показано, как использовать оператор *= для умножения значения 
    переменной.


        C:\PS> $a = 3
        C:\PS> $a *= 4
        C:\PS> $a
        12
 

    В данном случае оператор *= объединяет две операции. Сперва он 
    выполняет операцию умножения, а затем - операцию присваивания. Таким 
    образом, следующие инструкции будут эквивалентны.


        $a *= 2
        $a = ($a * 2)

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


        C:\PS> $a = "файл"
        C:\PS> $a *= 4 
        C:\PS> $a
        файлфайлфайлфайл

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


        $a[0] *= 2
 

  ОПЕРАТОР ДЕЛЕНИЯ С ПРИСВАИВАНИЕМ (/=)
    Оператора деления с присваиванием (/=) делит числовое значение 
    переменной на число, указанное справа от оператора. Этот оператор 
    нельзя использовать со строковыми переменными.


    Оператор /= объединяет две операции. Сперва он выполняет операцию 
    деления, а затем - операцию присваивания. Таким образом, следующие две 
    инструкции будут эквивалентны.


        $a /= 2
        $a = ($a / 2)

 
    Например, в следующей команде оператор /= используется для 
    деления значения переменной.


        C:\PS> $a = 8
        C:\PS> $a /=2
        C:\PS> $a
        4

 
    Чтобы разделить один из элементов массива, используйте индекс для 
    указания элемента, значение которого нужно изменить. Например, 
    следующая команда делит второй элемент массива (индекс = 1) на 2.


        $a[1] /= 2
 

  ОПЕРАТОР ВЫЧИСЛЕНИЯ ОСТАТКА С ПРИСВАИВАНИЕМ (%=)
    Оператор вычисления остатка с присваиванием (%=) делит значение 
    переменной на значение, указанное справа от оператора. Затем 
    оператор %= присваивает переменной остаток от деления (известен как 
    "модуль"). Этот оператор можно использовать в том случае, если переменная 
    содержит одно числовое значение. Этот оператор нельзя использовать в 
    случае, если переменная содержит строку или массив.


    Оператор %= объединяет две операции. Сначала он выполняет 
    операцию деления и вычисления остатка от деления, а затем присваивает 
    полученный остаток переменной. Таким образом, следующие инструкции будут 
    эквивалентны.


        $a %= 2
        $a = ($a % 2)

 
    В следующем примере показано, как использовать оператор %= для 
    сохранения остатка от деления.


        C:\PS> $a = 7
        C:\PS> $a %= 4
        C:\PS> $a
        3


  ОПЕРАТОРЫ ИНКРЕМЕНТА И ДЕКРЕМЕНТА

    Оператор инкремента (++) увеличивает значение переменной на 1. При 
    использовании оператора инкремента в простой инструкции значение не 
    возвращается.
    Для просмотра результата операции выведите значение переменной, 
    как показано ниже.


        C:\PS> $a = 7
        C:\PS> ++$a
        C:\PS> $a
        8


    Для принудительного возврата значения заключите переменную и 
    оператор в двойные кавычки, как показано ниже.


        C:\PS> $a = 7
        C:\PS> (++$a)
        8


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


        C:\PS> $a = 7
        C:\PS> $c = ++$a
        C:\PS> $a
        8
        C:\PS> $c
        8


    Постфиксная версия оператора увеличивает значение переменной на 1 
    после того, как значение переменной будет использовано в инструкции. В 
    следующем примере значения переменных $c и $a отличаются, поскольку 
    значение присваивается $c до изменения значения $a.


        C:\PS> $a = 7
        C:\PS> $c = $a++
        C:\PS> $a
        8
        C:\PS> $c
        7


    Оператор декремента (--) уменьшает значение переменной на 1. Как и для 
    оператора инкремента, при использовании оператора декремента в простой 
    инструкции значение не возвращается. Для возврата значения необходимо 
    использовать скобки, как показано ниже.


        C:\PS> $a = 7
        C:\PS> --$a
        C:\PS> $a
        6
        C:\PS> (--$a)
        5


    Префиксная версия оператора уменьшает значение переменной на 1 до 
    того, как значение переменной будет использоваться в инструкции, как 
    показано ниже.


        C:\PS> $a = 7
        C:\PS> $c = --$a
        C:\PS> $a
        6
        C:\PS> $c
        6


    Постфиксная версия оператора уменьшает значение переменной на 1 
    после того, как значение переменной будет использовано в инструкции. В 
    следующем примере значения переменных $d и $a отличаются, поскольку 
    значение присваивается $d до изменения значения $a.


        C:\PS> $a = 7
        C:\PS> $d = $a--
        C:\PS> $a
        6
        C:\PS> $d
        7


  ТИПЫ ПЛАТФОРМЫ MICROSOFT .NET FRAMEWORK
    По умолчанию, если переменной присвоено только одно значение, это 
    значение определяет тип данных переменной. Например, следующая команда 
    создает переменную целочисленного типа (System.Int32):


        $a = 6 


    Для определения типа платформы .NET Framework переменной 
    используйте метод GetType и его свойство FullName, как показано 
    ниже. Не забудьте добавить скобки после имени метода GetType, 
    хотя у вызова метода нет аргументов.


        C:\PS> $a = 6 
        C:\PS> $a.gettype().fullname 
        System.Int32 


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


        C:\PS> $a = "6"
        C:\PS> $a.gettype().fullname
        System.String

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


        C:\PS> $a = "файл"
        C:\PS> $a += 3
        C:\PS> $a
        файл3

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


        C:\PS> $a = 6
        C:\PS> $a += "3"
        C:\PS> $a
        9

 
    Можно привести новую скалярную переменную к любому типу данных 
    платформы .NET Framework, указав имя типа данных в квадратных 
    скобках перед именем переменной или первым присваиваемым значением. 
    Приведение переменной к типу позволяет определить, данные какого типа 
    можно хранить в переменной. Также можно определить поведение 
    переменной при выполнении с ней различных операций.


    Например, следующая команда приводит переменную к строковому типу:


        C:\PS> [string]$a = 27
        C:\PS> $a += 3
        C:\PS> $a
        273
 

    В следующем примере к типу приводится первое значение, а не 
    переменная.


        $a = [string]27

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


        C:\PS> $a = "строка"
        C:\PS> [int]$a
        Не удается преобразовать значение "строка" в тип 
        "System.Int32". Ошибка: "Неверный формат строки ввода."
        В строке:1 знак:8
        + [int]$a <<<<

        C:\PS> [int]$a =3
 

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


        C:\PS> $a = 3
        C:\PS> $a = "строка"

        C:\PS> [int]$a = 3
        C:\PS> $a = "строка"
        Не удается преобразовать значение "строка" в тип 
        "System.Int32". Ошибка: "Неверный формат строки ввода."
        В строке:1 знак :3
        + $a <<<< = "строка"

        C:\PS> [string]$a = "строка"
 

    В оболочке Windows PowerShell типы данных переменных, содержащих 
    несколько элементов в массиве обрабатываются по-другому, чем типы 
    данных переменных, содержащих один элемент. Если тип данных переменной 
    массива не был указан явно, такая переменная всегда принадлежит к 
    типу данных System.Object []. Этот тип данных свойственен массивам.


    В некоторых случаях можно заменить тип по умолчанию, указав 
    другой тип. Например, следующая команда приводит переменную к 
    типу массива строк:



        [string []] $a = "один", "два", "три"
 

    Переменные Windows PowerShell могут принадлежать к любому типу данных 
    платформы .NET Framework. Кроме того, можно присвоить любой полный 
    тип данных платформы .NET Framework, доступный в текущем процессе. 
    Например, следующая команда указывает тип данных System.Datetime:


        [system.datetime]$a = "5/31/2005"

 
    Переменной будет присвоено значение, которое соответствует типу данных 
    System.Datetime. Переменная $a примет следующее значение:


        Вторник, 31 мая 2005 г., 0:00:00


  ПРИСВАИВАНИЕ ЗНАЧЕНИЙ НЕСКОЛЬКИМ ПЕРЕМЕННЫМ
    В оболочке Windows PowerShell можно присвоить значения нескольким 
    переменным с помощью одной команды. Первый элемент присваиваемого 
    значения будет присвоен первой переменной, второй элемент будет 
    присвоен второй переменной, третий элемент - третьей переменной и 
    т. д. Например, следующая команда присваивает переменной $a 
    значение 1, переменной $b - значение 2, а переменной $c - значение 3.


        C:\PS> $a, $b, $c = 1, 2, 3

 
    Если присваиваемое значение содержит больше элементов, чем 
    переменных, все оставшиеся значения будут присвоены последней 
    переменной. Например, следующая команда содержит три переменные и пять 
    значений:


        $a, $b, $c = 1, 2, 3, 4, 5

 
    При выполнении этой команды Windows PowerShell присвоит переменной $a 
    значение 1, а переменной $b - значение 2. Переменной $c будут 
    присвоены значения 3, 4 и 5. Чтобы присвоить значения переменной $c 
    трем другим переменным, используйте следующий формат:


        $d, $e, $f = $c


    Эта команда присваивает переменной $d значение 3, переменной $e - 
    значение 4, а переменной $f - значение 5.


    Также можно присвоить одно и то же значение нескольким переменным, 
    организовав цепочку. Например, следующая команда присваивает значение 
    "три" всем четырем переменным:


        $a = $b = $c = $d = "три"

    
  КОМАНДЛЕТЫ ДЛЯ РАБОТЫ С ПЕРЕМЕННЫМИ
    Для присвоения переменной значения, кроме операции присваивания, также 
    используется командлет Set-Variable. Например, в следующей команде 
    командлет Set-Variable используется для присвоения переменной $a в 
    качестве значения массива 1, 2, 3.


        Set-Variable -name a -value 1, 2, 3 

СМ. ТАКЖЕ
    about_Arrays
    about_Hash_Tables
    about_Variables
    Clear-Variable
    Remove-Variable
    Set-Variable




Содержание