about_Assignment_Operators

Deskripsi singkat

Menjelaskan cara menggunakan operator untuk menetapkan nilai ke variabel.

Deskripsi panjang

Operator penugasan menetapkan satu atau beberapa nilai ke variabel. Tanda sama dengan (=) adalah operator penetapan PowerShell. PowerShell juga memiliki operator penetapan gabungan berikut: +=, , -=, *=, %=++, , --. ??= Operator penugasan gabungan melakukan operasi pada nilai sebelum penugasan.

Sintaks

Sintaks operator penugasan adalah sebagai berikut:

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

Ekspresi yang dapat ditetapkan mencakup variabel dan properti. Nilai dapat berupa nilai tunggal, array nilai, atau perintah, ekspresi, atau pernyataan.

Operator kenaikan dan penurunan adalah operator unary. Masing-masing memiliki versi awalan dan pascafiks.

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

Nilai ekspresi yang dapat ditetapkan harus berupa angka atau harus dapat dikonversi ke angka.

Menggunakan operator penugasan

Variabel diberi nama ruang memori yang menyimpan nilai. Anda menyimpan nilai dalam variabel menggunakan operator =penugasan . Nilai baru dapat menggantikan nilai variabel yang ada, atau Anda dapat menambahkan nilai baru ke nilai yang ada. Misalnya, pernyataan berikut menetapkan nilai PowerShell ke $MyShell variabel:

$MyShell = "PowerShell"

Saat Anda menetapkan nilai ke variabel di PowerShell, variabel dibuat jika belum ada. Misalnya, yang pertama dari dua pernyataan penugasan berikut membuat $a variabel dan menetapkan nilai 6 ke $a. Pernyataan penugasan kedua menetapkan nilai 12 ke $a. Pernyataan pertama membuat variabel baru. Pernyataan kedua hanya mengubah nilainya:

$a = 6
$a = 12

Variabel di PowerShell tidak memiliki jenis data tertentu kecuali Anda mentransmisikannya. Ketika variabel hanya berisi satu objek, variabel mengambil jenis data objek tersebut. Ketika variabel berisi kumpulan objek, variabel memiliki jenis data System.Object . Oleh karena itu, Anda dapat menetapkan semua jenis objek ke koleksi. Contoh berikut menunjukkan bahwa Anda dapat menambahkan objek proses, objek layanan, string, dan bilangan bulat ke variabel tanpa menghasilkan kesalahan:

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

Karena operator = penugasan memiliki prioritas yang lebih rendah daripada operator |alur, tanda kurung tidak diperlukan untuk menetapkan hasil alur perintah ke variabel. Misalnya, perintah berikut mengurutkan layanan di komputer lalu menetapkan layanan yang diurutkan ke $a variabel:

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

Anda juga dapat menetapkan nilai yang dibuat oleh pernyataan ke variabel, seperti dalam contoh berikut:

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

Contoh ini menetapkan nol ke $a variabel jika nilainya kurang dari $b nol. Ini menetapkan nilai $b ke $a jika nilainya tidak kurang dari $b nol.

Untuk menetapkan array (beberapa nilai) ke variabel, pisahkan nilai dengan koma, sebagai berikut:

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

Untuk menetapkan tabel hash ke variabel, gunakan notasi tabel hash standar di PowerShell. Ketik tanda saat @ diikuti oleh pasangan kunci/nilai yang dipisahkan oleh titik koma ; dan diapit kurung kurawal { }. Misalnya, untuk menetapkan hashtable ke $a variabel, ketik:

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

Untuk menetapkan nilai heksadesimal ke variabel, awali nilai dengan 0x. PowerShell mengonversi nilai heksadesimal (0x10) menjadi nilai desimal (dalam hal ini, 16) dan menetapkan nilai tersebut ke $a variabel. Misalnya, untuk menetapkan nilai 0x10 ke $a variabel, ketik:

$a = 0x10

Untuk menetapkan nilai eksponensial ke variabel, ketik nomor akar, huruf e, dan angka yang mewakili kelipatan 10. Misalnya, untuk menetapkan nilai 3,1415 ke daya 1.000 ke $a variabel, ketik:

$a = 3.1415e3

PowerShell juga dapat mengonversi kilobyte KB, megabyte MB, dan gigabyte GB menjadi byte. Misalnya, untuk menetapkan nilai 10 kilobyte ke $a variabel, ketik:

$a = 10kb

Menggunakan operator penugasan gabungan

Operator penugasan gabungan melakukan operasi numerik pada nilai sebelum penugasan.

Penting

Operator penugasan gabungan tidak menggunakan cakupan dinamis. Variabel selalu dalam cakupan saat ini.

Dalam contoh berikut, variabel $x didefinisikan dalam cakupan global. Kurung kurawal membuat cakupan baru. Variabel $x di dalam kurung kurawal adalah instans baru dan bukan salinan variabel global.

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

Saat Anda menggunakan operator penetapan reguler, Anda mendapatkan salinan variabel dari cakupan induk. Tetapi perhatikan bahwa $x dalam cakupan induk tidak diubah.

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

Penugasan berdasarkan operator penambahan

Penugasan oleh operator += penambahan meningkatkan nilai variabel atau menambahkan nilai yang ditentukan ke nilai yang ada. Tindakan tergantung pada apakah variabel memiliki jenis numerik atau string dan apakah variabel berisi nilai tunggal (skalar) atau beberapa nilai (koleksi).

Operator += menggabungkan dua operasi. Pertama, ia menambahkan, dan kemudian menetapkan. Oleh karena itu, pernyataan berikut setara:

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

Ketika variabel berisi nilai numerik tunggal, += operator meningkatkan nilai yang ada dengan jumlah di sisi kanan operator. Kemudian, operator menetapkan nilai yang dihasilkan ke variabel . Contoh berikut menunjukkan cara menggunakan += operator untuk meningkatkan nilai variabel:

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

Ketika nilai variabel adalah string, nilai di sisi kanan operator ditambahkan ke string, sebagai berikut:

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

Ketika nilai variabel adalah array, += operator menambahkan nilai di sisi kanan operator ke array. Kecuali array diketik secara eksplisit dengan transmisi, Anda dapat menambahkan semua jenis nilai ke array, sebagai berikut:

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

dan

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

Ketika nilai variabel adalah tabel hash, += operator menambahkan nilai di sisi kanan operator ke tabel hash. Namun, karena satu-satunya jenis yang dapat Anda tambahkan ke tabel hash adalah tabel hash lain, semua penugasan lainnya gagal.

Misalnya, perintah berikut menetapkan tabel hash ke $a variabel . Kemudian, ia menggunakan += operator untuk menambahkan tabel hash lain ke tabel hash yang ada, secara efektif menambahkan pasangan kunci-nilai baru ke tabel hash yang ada. Perintah ini berhasil, seperti yang ditunjukkan dalam output:

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

Perintah berikut mencoba menambahkan bilangan bulat "1" ke tabel hash dalam $a variabel. Perintah ini gagal:

$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.

Penugasan berdasarkan operator pengurangan

Penugasan oleh operator -= pengurangan mengurangi nilai variabel berdasarkan nilai yang ditentukan di sisi kanan operator. Operator ini tidak dapat digunakan dengan variabel string, dan tidak dapat digunakan untuk menghapus elemen dari koleksi.

Operator -= menggabungkan dua operasi. Pertama, mengurangi, dan kemudian menetapkan. Oleh karena itu, pernyataan berikut setara:

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

Contoh berikut menunjukkan cara menggunakan -= operator untuk mengurangi nilai variabel:

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

Anda juga dapat menggunakan -= operator penugasan untuk mengurangi nilai anggota array numerik. Untuk melakukan ini, tentukan indeks elemen array yang ingin Anda ubah. Dalam contoh berikut, nilai elemen ketiga array (elemen 2) berkurang 1:

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

Anda tidak dapat menggunakan -= operator untuk menghapus nilai variabel. Untuk menghapus semua nilai yang ditetapkan ke variabel, gunakan cmdlet Clear-Item atau Clear-Variable untuk menetapkan nilai $null atau "" ke variabel.

$a = $null

Untuk menghapus nilai tertentu dari array, gunakan notasi array untuk menetapkan nilai $null ke item tertentu. Misalnya, pernyataan berikut menghapus nilai kedua (posisi indeks 1) dari array:

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

Untuk menghapus variabel, gunakan cmdlet Remove-Variable . Metode ini berguna ketika variabel secara eksplisit dilemparkan ke jenis data tertentu, dan Anda menginginkan variabel yang tidak diketik. Perintah berikut menghapus $a variabel:

Remove-Variable -Name a

Penugasan dengan operator perkalian

Penugasan dengan operator *= perkalian mengalikan nilai numerik atau menambahkan jumlah salinan yang ditentukan dari nilai string variabel.

Saat variabel berisi nilai numerik tunggal, nilai tersebut dikalikan dengan nilai di sisi kanan operator. Misalnya, contoh berikut menunjukkan cara menggunakan *= operator untuk mengalikan nilai variabel:

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

Dalam hal ini, *= operator menggabungkan dua operasi. Pertama, ia mengalikan, dan kemudian menetapkan. Oleh karena itu, pernyataan berikut setara:

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

Saat variabel berisi nilai string, PowerShell menambahkan jumlah string yang ditentukan ke nilai , sebagai berikut:

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

Untuk mengalikan elemen array, gunakan indeks untuk mengidentifikasi elemen yang ingin Anda kalikan. Misalnya, perintah berikut mengalikan elemen pertama dalam array (posisi indeks 0) dengan 2:

$a[0] *= 2

Penugasan oleh operator divisi

Penugasan oleh operator /= divisi membagi nilai numerik dengan nilai yang ditentukan di sisi kanan operator. Operator tidak dapat digunakan dengan variabel string.

Operator /= menggabungkan dua operasi. Pertama, ia membagi, dan kemudian menetapkan. Oleh karena itu, dua pernyataan berikut setara:

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

Misalnya, perintah berikut menggunakan /= operator untuk membagi nilai variabel:

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

Untuk membagi elemen array, gunakan indeks untuk mengidentifikasi elemen yang ingin Anda ubah. Misalnya, perintah berikut membagi elemen kedua dalam array (posisi indeks 1) dengan 2:

$a[1] /= 2

Penugasan oleh operator modulus

Operator penugasan menurut modulus %= membagi nilai variabel dengan nilai di sisi kanan operator. Kemudian, %= operator menetapkan sisanya (dikenal sebagai modulus) ke variabel . Anda hanya dapat menggunakan operator ini saat variabel berisi satu nilai numerik. Anda tidak dapat menggunakan operator ini saat variabel berisi variabel string atau array.

Operator %= menggabungkan dua operasi. Pertama, ia membagi dan menentukan sisanya, dan kemudian menetapkan sisanya ke variabel. Oleh karena itu, pernyataan berikut setara:

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

Contoh berikut menunjukkan cara menggunakan %= operator untuk menyimpan modulus kuota:

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

Operator kenaikan dan penurunan

Operator kenaikan ++ meningkatkan nilai variabel sebesar 1. Saat Anda menggunakan operator kenaikan dalam pernyataan sederhana, tidak ada nilai yang dikembalikan. Untuk melihat hasilnya, tampilkan nilai variabel, sebagai berikut:

$a = 7
++$a
$a
8

Untuk memaksa nilai dikembalikan, sertakan variabel dan operator dalam tanda kurung, sebagai berikut:

$a = 7
(++$a)
8

Operator kenaikan dapat ditempatkan sebelum (awalan) atau setelah (postfix) variabel. Versi awalan operator menambahkan variabel sebelum nilainya digunakan dalam pernyataan, sebagai berikut:

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

Versi postfix operator menaikkan variabel setelah nilainya digunakan dalam pernyataan. Dalam contoh berikut, $c variabel dan $a memiliki nilai yang berbeda karena nilai ditetapkan sebelum $c$a perubahan:

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

Operator penurunan -- mengurangi nilai variabel sebesar 1. Seperti halnya operator kenaikan, tidak ada nilai yang dikembalikan saat Anda menggunakan operator dalam pernyataan sederhana. Gunakan tanda kurung untuk mengembalikan nilai, sebagai berikut:

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

Versi awalan operator mengurangi variabel sebelum nilainya digunakan dalam pernyataan, sebagai berikut:

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

Versi postfix operator mengurangi variabel setelah nilainya digunakan dalam pernyataan. Dalam contoh berikut, $d variabel dan $a memiliki nilai yang berbeda karena nilai ditetapkan sebelum $d$a perubahan:

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

Operator penugasan null-coalescing

Operator ??= penetapan null-coalescing menetapkan nilai operand tangan kanannya ke operand sebelah kirinya hanya jika operand sebelah kiri mengevaluasi ke null. Operator ??= tidak mengevaluasi operand kanannya apabila operand sebelah kiri mengevaluasi ke non-null.

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

Untuk informasi selengkapnya, lihat Operator null-coalescing.

Jenis Microsoft .NET

Secara default, ketika variabel hanya memiliki satu nilai, nilai yang ditetapkan ke variabel menentukan jenis data variabel. Misalnya, perintah berikut membuat variabel yang memiliki jenis System.Int32 :

$a = 6

Untuk menemukan jenis .NET variabel, gunakan metode GetType dan properti FullName-nya. Pastikan untuk menyertakan tanda kurung setelah nama metode GetType , meskipun panggilan metode tidak memiliki argumen:

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

Untuk membuat variabel yang berisi string, tetapkan nilai string ke variabel . Untuk menunjukkan bahwa nilainya adalah string, sertakan dalam tanda kutip, sebagai berikut:

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

Jika nilai pertama yang ditetapkan ke variabel adalah string, PowerShell memperlakukan semua operasi sebagai operasi string dan melemparkan nilai baru ke string. Ini terjadi dalam contoh berikut:

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

Jika nilai pertama adalah bilangan bulat, PowerShell memperlakukan semua operasi sebagai operasi bilangan bulat dan melemparkan nilai baru ke bilangan bulat. Ini terjadi dalam contoh berikut:

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

Anda dapat mentransmisikan variabel skalar baru sebagai jenis .NET apa pun dengan menempatkan nama jenis dalam tanda kurung yang mendahului nama variabel atau nilai penugasan pertama. Saat Anda mentransmisikan variabel, Anda menentukan jenis data yang dapat disimpan dalam variabel.

Misalnya, perintah berikut melemparkan variabel sebagai jenis string:

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

Contoh berikut melemparkan nilai pertama, alih-alih mentransmisian variabel:

$a = [string]27

Anda tidak dapat memprakirakan ulang jenis data variabel yang ada jika nilainya tidak dapat dikonversi ke jenis data baru.

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

Untuk mengubah jenis data, Anda harus mengganti nilainya, sebagai berikut:

[int]$a = 3

Selain itu, ketika Anda mendahului nama variabel dengan jenis data, jenis variabel tersebut dikunci kecuali Anda secara eksplisit mengambil alih jenis dengan menentukan jenis data lain. Jika Anda mencoba menetapkan nilai yang tidak kompatibel dengan jenis yang ada, dan Anda tidak secara eksplisit mengambil alih jenisnya, PowerShell menampilkan kesalahan, seperti yang diperlihatkan dalam contoh berikut:

$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"

Di PowerShell, jenis data variabel yang berisi beberapa item dalam array ditangani secara berbeda dari jenis data variabel yang berisi satu item. Kecuali jenis data secara khusus ditetapkan ke variabel array, jenis data selalu System.Object []. Jenis data ini khusus untuk array.

Terkadang, Anda dapat mengambil alih jenis default dengan menentukan jenis lain. Misalnya, perintah berikut melemparkan variabel sebagai string [] jenis array:

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

Variabel PowerShell dapat berupa jenis data .NET apa pun. Selain itu, Anda dapat menetapkan jenis data .NET yang sepenuhnya memenuhi syarat yang tersedia dalam proses saat ini. Misalnya, perintah berikut menentukan System.DateTime jenis data:

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

Variabel akan diberi nilai yang sesuai dengan System.DateTime jenis data. Nilai $a variabel adalah sebagai berikut:

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

Menetapkan beberapa variabel

Di PowerShell, Anda dapat menetapkan nilai ke beberapa variabel menggunakan satu perintah. Elemen pertama dari nilai penugasan ditetapkan ke variabel pertama, elemen kedua ditetapkan ke variabel kedua, elemen ketiga ke variabel ketiga. Ini dikenal sebagai beberapa penugasan.

Misalnya, perintah berikut menetapkan nilai 1 ke $a variabel, nilai 2 ke $b variabel, dan nilai 3 ke $c variabel:

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

Jika nilai penugasan berisi lebih banyak elemen daripada variabel, semua nilai yang tersisa ditetapkan ke variabel terakhir. Misalnya, perintah berikut berisi tiga variabel dan lima nilai:

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

Oleh karena itu, PowerShell menetapkan nilai 1 ke $a variabel dan nilai 2 ke $b variabel. Ini menetapkan nilai 3, 4, dan 5 ke $c variabel. Untuk menetapkan nilai dalam variabel ke $c tiga variabel lain, gunakan format berikut:

$d, $e, $f = $c

Perintah ini menetapkan nilai 3 ke $d variabel, nilai 4 ke $e variabel, dan nilai 5 ke $f variabel.

Jika nilai penugasan berisi lebih sedikit elemen daripada variabel, variabel yang tersisa diberi nilai $null. Misalnya, perintah berikut berisi tiga variabel dan dua nilai:

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

Oleh karena itu, PowerShell menetapkan nilai 1 ke $a variabel dan nilai 2 ke $b variabel. Variabelnya $c adalah $null.

Anda juga dapat menetapkan satu nilai ke beberapa variabel dengan menautkan variabel. Misalnya, perintah berikut menetapkan nilai "tiga" ke keempat variabel:

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

Selain menggunakan operasi penugasan untuk mengatur nilai variabel, Anda juga dapat menggunakan cmdlet Set-Variable . Misalnya, perintah berikut menggunakan Set-Variable untuk menetapkan array 1, 2, 3 ke $a variabel.

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

Lihat juga