Udostępnij za pośrednictwem


o_operatorach_przypisania

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. PowerShell ma również następujące operatory przypisania złożonego : +=, -=, *=, %=, ++, --, ??=. 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 postfiks.

  • <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 zmienną $a i przypisuje wartość 6 do $a. Druga instrukcja przypisania przypisuje wartość 12 do $a. Pierwsza instrukcja tworzy nową zmienną. Drugie zdanie zmienia tylko swoją wartość.

$a = 6
$a = 12

Zmienne w programie PowerShell nie mają określonego typu danych, chyba że je rzutujesz. 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 od operatora potoku |, nie trzeba używać nawiasów, aby przypisać wynik 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ść $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 @, a następnie pary klucz/wartość rozdzielone średnikami ; i ujęte w nawiasie klamrowym { }. 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, poprzedź wartość prefiksem 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 GB na bajty. 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żny

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 zdefiniowana 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 zmienione.

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

Przypisanie za pomocą 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 stwierdzenia 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

i

$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ótowej, jest kolejna tabela skrótowa, 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 +=, aby dołączyć kolejną tabelę 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 przez odejmowanie

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 stwierdzenia 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 polecenia 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 na określony typ danych, a Ty chcesz mieć zmienną bez typu. Następujące polecenie usuwa zmienną $a:

Remove-Variable -Name a

Przypisanie za pomocą operatora 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 *=, aby pomnożyć wartość 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 stwierdzenia 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 za pomocą operatora dzielenia /= polega na podzieleniu wartości liczbowej 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 dwa zdania są równoważne.

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

Na przykład następujące polecenie używa operatora /=, aby podzielić wartość 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 za pomocą operatora modulo %= dzieli wartość zmiennej przez wartość znajdującą się 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 stwierdzenia są równoważne:

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

W poniższym przykładzie pokazano, jak użyć operatora %=, aby zapisać wynik operacji modulo ilorazu.

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

Operatory inkrementacji i dekrementacji

Operator inkrementacji ++ 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. Operator w wersji prefiksowej zwiększa zmienną przed użyciem jej wartości w instrukcji, w następujący sposób:

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

Postfiksowa wersja operatora zwiększa zmienną po użyciu jej wartości w instrukcji. W poniższym przykładzie zmienne $c i $a mają różne wartości, ponieważ wartość jest przypisywana do $c przed zmianą $a.

$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 użyciem jej wartości w instrukcji.

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

Operator postfiksowy dekrementuje zmienną po użyciu jej wartości w instrukcji. W poniższym przykładzie zmienne $d i $a mają różne wartości, ponieważ wartość jest przypisywana do $d przed zmianą $a.

$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 przetwarza 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 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 .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ą na dowolny typ .NET, umieszczając nazwę typu w nawiasach poprzedzających nazwę zmiennej lub pierwszą przypisaną wartość. Podczas rzutowania zmiennej definiujesz typ danych, które mogą być przechowywane w zmiennej.

Na przykład następujące polecenie przekształca zmienną na typ ciągu znaków:

[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 przekształca zmienną na typ tablicy string [].

[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 otrzyma wartość zgodną z typem danych System.DateTime. 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 wielokrotnym przypisaniem.

Na przykład następujące polecenie przypisuje wartość 1 do zmiennej $a, wartość 2 do zmiennej $b 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 zmiennej $a 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 zmiennej $e 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 zmiennej $a i wartość 2 do zmiennej $b. Zmienna $c jest $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 używa Set-Variable do przypisania tablicy 1, 2, 3 do zmiennej $a.

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

Zobacz też