Udostępnij za pośrednictwem


about_Assignment_Operators

Krótki opis

Opisuje sposób przypisywania wartości do zmiennych za pomocą operatorów.

Długi opis

Operatory przypisania przypisują co najmniej jedną wartość do zmiennej. Mogą wykonywać operacje liczbowe na wartościach przed przypisaniem.

Program PowerShell obsługuje następujące operatory przypisania.

Operator Opis
= Ustawia wartość zmiennej na określoną wartość.
+= Zwiększa wartość zmiennej o określoną wartość lub
Dołącza określoną wartość do istniejącej wartości.
-= Zmniejsza wartość zmiennej o określoną wartość.
*= Mnoży wartość zmiennej przez określoną wartość lub
Dołącza określoną wartość do istniejącej wartości.
/= Dzieli wartość zmiennej przez określoną wartość.
%= Dzieli wartość zmiennej przez określoną wartość i
następnie przypisuje resztę (modulo) do zmiennej.
++ Zwiększa wartość zmiennej, właściwość do przypisania lub
array, element o 1.
-- Zmniejsza wartość zmiennej, właściwości możliwej do przypisania lub
array, element o 1.

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 inkrementacji i dekrementacji są operatorami jednoargumentowymi. Każdy z nich ma prefiks i wersje postfiksu.

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

Wyrażenie możliwe do przypisania musi być liczbą lub musi być konwertowane na liczbę.

Przypisywanie wartości

Zmienne są nazwanymi miejscami do 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.

Podstawowy operator przypisania jest znakiem =(ASCII 61)równoś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 jest tworzona, 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 oddane. 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ć do kolekcji dowolny typ obiektu. W poniższym przykładzie pokazano, że można dodać 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ść $b do $a , jeśli wartość $b nie jest mniejsza niż zero.

Operator przypisania

Operator = przypisania przypisuje wartości do zmiennych. Jeśli zmienna ma już wartość, operator = przypisania zastępuje wartość bez ostrzeżenia.

Następująca instrukcja przypisuje wartość całkowitą 6 do zmiennej $a :

$a = 6

Aby przypisać wartość ciągu do zmiennej, należy ująć wartość ciągu w cudzysłów w następujący sposób:

$a = "baseball"

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 na znak @ , a następnie pary klucz/wartość, które są oddzielone średnikami ; i ujęte w nawiasy klamrowe { }. Aby na przykład przypisać tabelę skrótów 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

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ąg oraz czy zmienna zawiera jedną 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ótów, 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 , aby dołączyć kolejną tabelę skrótów do istniejącej tabeli skrótów, efektywnie dodając 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
You can add another hash table only to a hash table.
At line:1 char:6
+ $a += <<<<  1

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żna 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 do usunięcia 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 ma być nietypowa zmienna. 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 za pomocą *= operatora pomnożyć wartość zmiennej:

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

W tym przypadku *= operator łączy dwie operacje. Najpierw mnoży się, 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) o 2:

$a[0] *= 2

Przypisanie według operatora dzielenia

Przypisanie według operatora /= 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 się, 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) na 2:

$a[1] /= 2

Przypisanie według operatora 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 użyć %= operatora do zapisania modulatu ilorazu:

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

Operatory przyrostu i dekrementacji

Operator ++ przyrostu zwiększa wartość zmiennej o 1. Jeśli używasz operatora przyrostowego 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 przyrostu można umieścić przed (prefiksem) lub po (postfix) zmiennej. Prefiks wersji 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 jego 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 do $c przed $a zmianami:

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

Operator -- dekrementacji zmniejsza wartość zmiennej o 1. Podobnie jak w przypadku operatora przyrostu, ż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 w instrukcji . W poniższym przykładzie zmienne i $a mają różne wartości, $d ponieważ wartość jest przypisywana do $d przed $a zmianami:

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

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 "Liczba całkowita" (System.Int32):

$a = 6

Aby znaleźć typ platformy .NET zmiennej, użyj metody GetType i jej właściwości FullName w następujący sposób. 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 je ująć w cudzysłów w następujący sposób:

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

Jeśli pierwsza wartość przypisana do zmiennej jest ciągiem, 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

Nową zmienną skalarną można rzutować jako dowolny typ platformy .NET, umieszczając nazwę typu w nawiasach kwadratowych poprzedzających nazwę zmiennej lub pierwszą wartość przypisania. Podczas rzutowania zmiennej można określić typy danych, które mogą być przechowywane w zmiennej. Ponadto można określić, jak zmienna zachowuje się podczas manipulowania nią.

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

Podczas rzutowania zmiennej do określonego typu wspólna konwencja polega na rzutowania zmiennej, a nie wartości. Nie można jednak ponownie przekształcić typu danych istniejącej zmiennej, jeśli jej wartość nie może zostać przekonwertowana na nowy typ danych. Aby zmienić typ danych, należy zastąpić jego wartość w następujący sposób:

$a = "string"
[int]$a
Cannot convert value "string" to type "System.Int32". Error: "Input string was
not in a correct format." At line:1 char:8 + [int]$a <<<<
[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"
Cannot convert value "string" to type "System.Int32". Error: "Input
string was not in a correct format."
At line:1 char:3
+ $a <<<<  = "string"
[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 tablicy, 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 do wartości zgodnej 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 przypisać 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 itd. 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ą przypisywane 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 $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 zmiennej $a i wartość 2 do zmiennej $b . Zmienna $c to $null.

Można również przypisać jedną wartość do wielu zmiennych, tworząc łańcuch zmiennych. 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 do ustawiania wartości zmiennej można również użyć polecenia cmdlet Set-Variable . Na przykład następujące polecenie używa Set-Variable polecenia do przypisania tablicy 1, 2, 3 do zmiennej $a .

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

Zobacz też