about_Assignment_Operators

Krótki opis

Opisuje sposób przypisywania wartości do zmiennych przy użyciu operatorów.

Długi opis

Operatory przypisania przypisują co najmniej jedną wartość do zmiennej. Znak równości (=) jest operatorem przypisania programu PowerShell. Program PowerShell ma również następujące złożone operatory przypisania: +=, , -=, ++%=*=, , --, . ??= Operatory przypisania złożonego wykonują operacje na wartościach przed przypisaniem.

Składnia

Składnia operatorów przypisania jest następująca:

  • <assignable-expression> <assignment-operator> <value>

Wyrażenia możliwe do przypisania obejmują zmienne i właściwości. Wartość może być pojedynczą wartością, tablicą wartości lub poleceniem, wyrażeniem lub instrukcją.

Operatory przyrostu i dekrementacji są operatorami jednoargumentowymi. Każdy z nich ma prefiks i wersje postfiksu.

  • <assignable-expression><operator>
  • <operator><assignable-expression>

Wartość przypisywanego wyrażenia musi być liczbą lub musi być konwertowana na liczbę.

Korzystanie z operatora przypisania

Zmienne są nazwanymi miejscami pamięci, które przechowują wartości. Wartości są przechowywane w zmiennych przy użyciu operatora =przypisania . Nowa wartość może zastąpić istniejącą wartość zmiennej lub dołączyć nową wartość do istniejącej wartości. Na przykład następująca instrukcja przypisuje wartość programu PowerShell do zmiennej $MyShell :

$MyShell = "PowerShell"

Po przypisaniu wartości do zmiennej w programie PowerShell zmienna zostanie utworzona, jeśli jeszcze nie istnieje. Na przykład pierwsza z następujących dwóch instrukcji przypisania tworzy $a zmienną i przypisuje wartość 6 do $a. Druga instrukcja przypisania przypisuje wartość 12 do $a. Pierwsza instrukcja tworzy nową zmienną. Druga instrukcja zmienia tylko jego wartość:

$a = 6
$a = 12

Zmienne w programie PowerShell nie mają określonego typu danych, chyba że zostaną one obsadzane. Gdy zmienna zawiera tylko jeden obiekt, zmienna przyjmuje typ danych tego obiektu. Gdy zmienna zawiera kolekcję obiektów, zmienna ma typ danych System.Object . W związku z tym można przypisać dowolny typ obiektu do kolekcji. W poniższym przykładzie pokazano, że można dodawać obiekty procesu, obiekty usługi, ciągi i liczby całkowite do zmiennej bez generowania błędu:

$a = Get-Process
$a += Get-Service
$a += "string"
$a += 12

Ponieważ operator = przypisania ma niższy priorytet niż operator |potoku, nawiasy nie są wymagane do przypisania wyniku potoku poleceń do zmiennej. Na przykład następujące polecenie sortuje usługi na komputerze, a następnie przypisuje posortowane usługi do zmiennej $a :

$a = Get-Service | Sort-Object -Property name

Możesz również przypisać wartość utworzoną przez instrukcję do zmiennej, jak w poniższym przykładzie:

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

Ten przykład przypisuje zero do zmiennej $a , jeśli wartość $b jest mniejsza niż zero. Przypisuje wartość parametru $b do $a , jeśli wartość $b nie jest mniejsza niż zero.

Aby przypisać tablicę (wiele wartości) do zmiennej, należy oddzielić wartości przecinkami w następujący sposób:

$a = "apple", "orange", "lemon", "grape"

Aby przypisać tabelę skrótów do zmiennej, użyj standardowej notacji tabeli skrótów w programie PowerShell. Wpisz znak pod znakiem @ , a następnie pary klucz/wartość, które są oddzielone średnikami ; i ujęte w nawiasy klamrowe { }. Aby na przykład przypisać tabelę skrótu do zmiennej $a , wpisz:

$a = @{one=1; two=2; three=3}

Aby przypisać wartości szesnastkowe do zmiennej, poprzedzić wartość wartością 0x. Program PowerShell konwertuje wartość szesnastkową (0x10) na wartość dziesiętną (w tym przypadku 16) i przypisuje tę wartość do zmiennej $a . Aby na przykład przypisać wartość 0x10 do zmiennej $a , wpisz:

$a = 0x10

Aby przypisać wartość wykładniczą do zmiennej, wpisz numer główny, literę ei liczbę reprezentującą wielokrotność 10. Aby na przykład przypisać wartość 3.1415 do potęgi 1000 do zmiennej $a , wpisz:

$a = 3.1415e3

Program PowerShell może również konwertować kilobajty KB, megabajty MBi gigabajty na bajty GB . Aby na przykład przypisać wartość 10 kilobajtów do zmiennej $a , wpisz:

$a = 10kb

Używanie operatorów przypisania złożonego

Operatory przypisania złożonego wykonują operacje liczbowe na wartościach przed przypisaniem.

Ważne

Operatory przypisania złożonego nie używają dynamicznego określania zakresu. Zmienna jest zawsze w bieżącym zakresie.

W poniższym przykładzie zmienna $x jest definiowana w zakresie globalnym. Nawiasy klamrowe tworzą nowy zakres. Zmienna $x wewnątrz nawiasów klamrowych jest nowym wystąpieniem, a nie kopią zmiennej globalnej.

$x = 1 # Global scope
& { $x += 1; $x }
1

Gdy używasz operatora przypisania regularnego, otrzymujesz kopię zmiennej z zakresu nadrzędnego. Należy jednak zauważyć, że $x w zakresie nadrzędnym nie jest zmieniana.

$x = 1 # Global scope
& { $x = $x + 1; $x }
"Global `$x = $x"
2
Global $x = 1

Przypisanie według operatora dodawania

Przypisanie przez operator += dodawania zwiększa wartość zmiennej lub dołącza określoną wartość do istniejącej wartości. Akcja zależy od tego, czy zmienna ma typ liczbowy, czy ciągowy oraz czy zmienna zawiera pojedynczą wartość (skalarną) czy wiele wartości (kolekcja).

Operator += łączy dwie operacje. Najpierw dodaje, a następnie przypisuje. W związku z tym następujące instrukcje są równoważne:

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

Gdy zmienna zawiera pojedynczą wartość liczbową, += operator zwiększa istniejącą wartość o kwotę po prawej stronie operatora. Następnie operator przypisuje wynikową wartość do zmiennej. W poniższym przykładzie pokazano, jak za pomocą += operatora zwiększyć wartość zmiennej:

$a = 4
$a += 2
$a
6

Gdy wartość zmiennej jest ciągiem, wartość po prawej stronie operatora jest dołączana do ciągu w następujący sposób:

$a = "Windows"
$a += " PowerShell"
$a
Windows PowerShell

Gdy wartość zmiennej jest tablicą, += operator dołącza wartości po prawej stronie operatora do tablicy. Jeśli tablica nie jest jawnie typowana przez rzutowanie, można dołączyć dowolny typ wartości do tablicy w następujący sposób:

$a = 1,2,3
$a += 2
$a
1
2
3
2

oraz

$a += "String"
$a
1
2
3
2
String

Gdy wartość zmiennej jest tabelą skrótów, += operator dołącza wartość po prawej stronie operatora do tabeli skrótów. Jednak ponieważ jedynym typem, który można dodać do tabeli skrótu, jest kolejna tabela skrótów, wszystkie inne przypisania kończą się niepowodzeniem.

Na przykład następujące polecenie przypisuje tabelę skrótów do zmiennej $a . Następnie używa += operatora do dołączania kolejnej tabeli skrótów do istniejącej tabeli skrótów, co skutecznie dodaje nową parę klucz-wartość do istniejącej tabeli skrótów. To polecenie powiedzie się, jak pokazano w danych wyjściowych:

$a = @{a = 1; b = 2; c = 3}
$a += @{mode = "write"}
$a
Name                           Value
----                           -----
a                              1
b                              2
mode                           write
c                              3

Następujące polecenie próbuje dołączyć liczbę całkowitą "1" do tabeli skrótów w zmiennej $a . To polecenie kończy się niepowodzeniem:

$a = @{a = 1; b = 2; c = 3}
$a += 1
InvalidOperation:
Line |
   2 |  $a += 1
     |  ~~~~~~~
     | A hash table can only be added to another hash table.

Operator przypisania według odejmowania

Operator -= przypisania przez odejmowanie dekrementuje wartość zmiennej według wartości określonej po prawej stronie operatora. Tego operatora nie można używać ze zmiennymi ciągu i nie można go użyć do usunięcia elementu z kolekcji.

Operator -= łączy dwie operacje. Najpierw odejmuje, a następnie przypisuje. W związku z tym następujące instrukcje są równoważne:

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

W poniższym przykładzie pokazano, jak za pomocą -= operatora zmniejszyć wartość zmiennej:

$a = 8
$a -= 2
$a
6

Możesz również użyć -= operatora przypisania, aby zmniejszyć wartość elementu członkowskiego tablicy liczbowej. W tym celu określ indeks elementu tablicy, który chcesz zmienić. W poniższym przykładzie wartość trzeciego elementu tablicy (element 2) jest zmniejszana o 1:

$a = 1,2,3
$a[2] -= 1
$a
1
2
2

Nie można użyć -= operatora , aby usunąć wartości zmiennej. Aby usunąć wszystkie wartości przypisane do zmiennej, użyj poleceń cmdlet Clear-Item lub Clear-Variable , aby przypisać wartość $null lub "" do zmiennej.

$a = $null

Aby usunąć określoną wartość z tablicy, użyj notacji tablicy, aby przypisać wartość $null do określonego elementu. Na przykład następująca instrukcja usuwa drugą wartość (położenie indeksu 1) z tablicy:

$a = 1,2,3
$a
1
2
3
$a[1] = $null
$a
1
3

Aby usunąć zmienną, użyj polecenia cmdlet Remove-Variable . Ta metoda jest przydatna, gdy zmienna jest jawnie rzutowana do określonego typu danych i chcesz mieć nietypową zmienną. Następujące polecenie usuwa zmienną $a :

Remove-Variable -Name a

Przypisanie przez operator mnożenia

Przypisanie przez operator *= mnożenia mnoży wartość liczbową lub dołącza określoną liczbę kopii wartości ciągu zmiennej.

Gdy zmienna zawiera pojedynczą wartość liczbową, ta wartość jest mnożona przez wartość po prawej stronie operatora. Na przykład w poniższym przykładzie pokazano, jak użyć *= operatora do pomnożenia wartości zmiennej:

$a = 3
$a *= 4
$a
12

W tym przypadku *= operator łączy dwie operacje. Najpierw mnoży, a następnie przypisuje. W związku z tym następujące instrukcje są równoważne:

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

Gdy zmienna zawiera wartość ciągu, program PowerShell dołącza określoną liczbę ciągów do wartości w następujący sposób:

$a = "file"
$a *= 4
$a
filefilefilefile

Aby pomnożyć element tablicy, użyj indeksu, aby zidentyfikować element, który chcesz pomnożyć. Na przykład następujące polecenie mnoży pierwszy element w tablicy (pozycja indeksu 0) przez 2:

$a[0] *= 2

Przypisanie według operatora dzielenia

Przypisanie przez operator /= dzielenia dzieli wartość liczbową przez wartość określoną po prawej stronie operatora. Nie można użyć operatora ze zmiennymi ciągu.

Operator /= łączy dwie operacje. Najpierw dzieli, a następnie przypisuje. W związku z tym następujące dwie instrukcje są równoważne:

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

Na przykład następujące polecenie używa /= operatora do dzielenia wartości zmiennej:

$a = 8
$a /=2
$a
4

Aby podzielić element tablicy, użyj indeksu, aby zidentyfikować element, który chcesz zmienić. Na przykład następujące polecenie dzieli drugi element w tablicy (pozycja indeksu 1) przez 2:

$a[1] /= 2

Przypisanie przez operator modulu

Przypisanie przez operator %= modulus dzieli wartość zmiennej przez wartość po prawej stronie operatora. %= Następnie operator przypisuje resztę (znaną jako modulus) do zmiennej. Tego operatora można użyć tylko wtedy, gdy zmienna zawiera pojedynczą wartość liczbową. Nie można użyć tego operatora, gdy zmienna zawiera zmienną ciągu lub tablicę.

Operator %= łączy dwie operacje. Najpierw dzieli i określa resztę, a następnie przypisuje resztę do zmiennej. W związku z tym następujące instrukcje są równoważne:

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

W poniższym przykładzie pokazano, jak za pomocą %= operatora zapisać modulo ilorazu:

$a = 7
$a %= 4
$a
3

Operatory inkrementacji i dekrementacji

Operator ++ przyrostu zwiększa wartość zmiennej o 1. Jeśli używasz operatora inkrementacji w prostej instrukcji, żadna wartość nie jest zwracana. Aby wyświetlić wynik, wyświetl wartość zmiennej w następujący sposób:

$a = 7
++$a
$a
8

Aby wymusić zwrócenie wartości, należy ująć zmienną i operator w nawiasy w następujący sposób:

$a = 7
(++$a)
8

Operator inkrementacji można umieścić przed (prefiks) lub po (postfiks) zmiennej. Wersja prefiksu operatora zwiększa zmienną przed jej wartością w instrukcji w następujący sposób:

$a = 7
$c = ++$a
$a
8
$c
8

Wersja postfiksu operatora zwiększa zmienną po jej wartości jest używana w instrukcji . W poniższym przykładzie zmienne i $a mają różne wartości, $c ponieważ wartość jest przypisywana przed $c$a zmianami:

$a = 7
$c = $a++
$a
8
$c
7

Operator -- dekrementacji zmniejsza wartość zmiennej o 1. Podobnie jak w przypadku operatora inkrementacji, żadna wartość nie jest zwracana podczas używania operatora w prostej instrukcji. Użyj nawiasów, aby zwrócić wartość w następujący sposób:

$a = 7
--$a
$a
6
(--$a)
5

Wersja prefiksu operatora dekrementuje zmienną przed jej wartością w instrukcji w następujący sposób:

$a = 7
$c = --$a
$a
6
$c
6

Wersja postfiksu operatora dekrementuje zmienną po jej wartości jest używana w instrukcji . W poniższym przykładzie zmienne i $a mają różne wartości, $d ponieważ wartość jest przypisywana przed $d$a zmianami:

$a = 7
$d = $a--
$a
6
$d
7

Operator przypisania łączenia wartości null

Operator ??= przypisania łączenia wartości null przypisuje wartość operandu prawego do operandu po lewej stronie tylko wtedy, gdy operand po lewej stronie daje wartość null. ??= Operator nie ocenia operandu po prawej stronie, jeśli operand po lewej stronie zwróci wartość inną niż null.

$x = $null
$x ??= 100
$x
100

Aby uzyskać więcej informacji, zobacz Operator łączenia wartości null.

Typy platformy Microsoft .NET

Domyślnie, gdy zmienna ma tylko jedną wartość, wartość przypisana do zmiennej określa typ danych zmiennej. Na przykład następujące polecenie tworzy zmienną o typie System.Int32 :

$a = 6

Aby znaleźć typ platformy .NET zmiennej, użyj metody GetType i jej właściwości FullName . Pamiętaj, aby uwzględnić nawiasy po nazwie metody GetType , mimo że wywołanie metody nie ma argumentów:

$a = 6
$a.GetType().FullName
System.Int32

Aby utworzyć zmienną zawierającą ciąg, przypisz wartość ciągu do zmiennej. Aby wskazać, że wartość jest ciągiem, należy ująć ją w cudzysłów w następujący sposób:

$a = "6"
$a.GetType().FullName
System.String

Jeśli pierwszą wartością przypisaną do zmiennej jest ciąg, program PowerShell traktuje wszystkie operacje jako operacje ciągów i rzutuje nowe wartości na ciągi. Dzieje się tak w poniższym przykładzie:

$a = "file"
$a += 3
$a
file3

Jeśli pierwsza wartość jest liczbą całkowitą, program PowerShell traktuje wszystkie operacje jako operacje całkowite i rzutuje nowe wartości na liczby całkowite. Dzieje się tak w poniższym przykładzie:

$a = 6
$a += "3"
$a
9

Możesz rzutować nową zmienną skalarną jako dowolny typ platformy .NET, umieszczając nazwę typu w nawiasach poprzedzających nazwę zmiennej lub pierwszą wartość przypisania. Podczas rzutowania zmiennej definiujesz typ danych, które mogą być przechowywane w zmiennej.

Na przykład następujące polecenie rzutuje zmienną jako typ ciągu:

[string]$a = 27
$a += 3
$a
273

Poniższy przykład rzutuje pierwszą wartość zamiast rzutowania zmiennej:

$a = [string]27

Nie można ponownie przekształcić typu danych istniejącej zmiennej, jeśli nie można przekonwertować jej wartości na nowy typ danych.

$a = "string"
[int]$a
InvalidArgument: Cannot convert value "string" to type "System.Int32". Error:
"The input string 'string' was not in a correct format."

Aby zmienić typ danych, musisz zastąpić jego wartość w następujący sposób:

[int]$a = 3

Ponadto w przypadku poprzedzania nazwy zmiennej typem danych typ tej zmiennej jest zablokowany, chyba że jawnie zastąpisz typ, określając inny typ danych. Jeśli spróbujesz przypisać wartość niezgodną z istniejącym typem i nie zastąpisz jawnie typu, program PowerShell wyświetli błąd, jak pokazano w poniższym przykładzie:

$a = 3
$a = "string"
[int]$a = 3
$a = "string"
MetadataError:
Line |
   2 |  $a = "string"
     |  ~~~~~~~~~~~~~
     | Cannot convert value "string" to type "System.Int32". Error: "The input
string 'string' was not in a correct format."
[string]$a = "string"

W programie PowerShell typy danych zmiennych, które zawierają wiele elementów w tablicy, są obsługiwane inaczej niż typy danych zmiennych zawierających jeden element. Jeśli typ danych nie jest specjalnie przypisany do zmiennej tablicowej, typ danych jest zawsze System.Object []. Ten typ danych jest specyficzny dla tablic.

Czasami można zastąpić domyślny typ, określając inny typ. Na przykład następujące polecenie rzutuje zmienną string [] jako typ tablicy:

[string []] $a = "one", "two", "three"

Zmienne programu PowerShell mogą być dowolnym typem danych platformy .NET. Ponadto można przypisać dowolny w pełni kwalifikowany typ danych platformy .NET, który jest dostępny w bieżącym procesie. Na przykład następujące polecenie określa System.DateTime typ danych:

[System.DateTime]$a = "5/31/2005"

Zmienna zostanie przypisana wartość zgodna z typem System.DateTime danych. Wartość zmiennej $a będzie następująca:

Tuesday, May 31, 2005 12:00:00 AM

Przypisywanie wielu zmiennych

W programie PowerShell można przypisywać wartości do wielu zmiennych przy użyciu jednego polecenia. Pierwszy element wartości przypisania jest przypisywany do pierwszej zmiennej, drugi element jest przypisywany do drugiej zmiennej, trzeciego elementu do trzeciej zmiennej. Jest to nazywane wieloma przypisaniami.

Na przykład następujące polecenie przypisuje wartość 1 do $a zmiennej, wartość 2 do $b zmiennej i wartość 3 do zmiennej $c :

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

Jeśli wartość przypisania zawiera więcej elementów niż zmienne, wszystkie pozostałe wartości są przypisane do ostatniej zmiennej. Na przykład następujące polecenie zawiera trzy zmienne i pięć wartości:

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

W związku z tym program PowerShell przypisuje wartość 1 do $a zmiennej i wartość 2 do zmiennej $b . Przypisuje wartości 3, 4 i 5 do zmiennej $c . Aby przypisać wartości w zmiennej $c do trzech innych zmiennych, użyj następującego formatu:

$d, $e, $f = $c

To polecenie przypisuje wartość 3 do zmiennej $d , wartość 4 do $e zmiennej i wartość 5 do zmiennej $f .

Jeśli wartość przypisania zawiera mniej elementów niż zmienne, pozostałe zmienne są przypisane do wartości $null. Na przykład następujące polecenie zawiera trzy zmienne i dwie wartości:

$a, $b, $c = 1, 2

W związku z tym program PowerShell przypisuje wartość 1 do $a zmiennej i wartość 2 do zmiennej $b . Zmienna $c to $null.

Można również przypisać jedną wartość do wielu zmiennych, łącząc zmienne. Na przykład następujące polecenie przypisuje wartość "trzy" do wszystkich czterech zmiennych:

$a = $b = $c = $d = "three"

Oprócz używania operacji przypisania w celu ustawienia wartości zmiennej można również użyć polecenia cmdlet Set-Variable . Na przykład następujące polecenie służy Set-Variable do przypisania tablicy 1, 2, 3 do zmiennej $a .

Set-Variable -Name a -Value 1, 2, 3

Zobacz też