Tentang_Operator_Penugasan

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 penugasan PowerShell. PowerShell juga memiliki operator penugasan gabungan berikut: , , +=, -=, *=, %=, ++, --, ??=. Operator penugasan gabungan melakukan operasi pada nilai sebelum penugasan.

Syntax

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 dari 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 variabel $MyShell:

$MyShell = "PowerShell"

Saat Anda menetapkan nilai ke variabel di PowerShell, variabel dibuat jika belum ada. Misalnya, yang pertama dari dua pernyataan penugasan berikut membuat variabel $a dan menetapkan nilai 6 ke $a. Pernyataan penugasan kedua memberikan 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. Saat 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 variabel $a:

$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 variabel $a jika nilai $b kurang dari nol. Ini menetapkan nilai $b ke $a jika nilai $b tidak kurang dari 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 @ @ diikuti oleh pasangan kunci/nilai yang dipisahkan dengan titik koma ; dan diapit kurung kurawal { }. Misalnya, untuk menetapkan hashtable ke variabel $a, 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 variabel $a. Misalnya, untuk menetapkan nilai 0x10 ke variabel $a, 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 variabel $a, ketik:

$a = 3.1415e3

PowerShell juga dapat mengonversi kilobyte KB, megabyte MB, dan gigabyte GB menjadi byte. Misalnya, untuk menetapkan nilai 10 kilobyte ke variabel $a, 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 berada dalam lingkup 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 dengan 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, menambahkan, lalu 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 melalui pengubahan tipe data, Anda dapat menambahkan tipe nilai apa pun ke dalam array, sebagai berikut:

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

dan

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

Saat 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 variabel $a. 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 variabel $a. 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, ia mengurangi, 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 variabel $a:

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, itu membagi, dan kemudian mengalokasikan. 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 menggunakan operator modulus

Penugasan oleh operator 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 inkremen dapat ditempatkan sebelum (awalan) atau setelah (akhiran) 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, variabel $c dan $a memiliki nilai yang berbeda karena nilai ditetapkan ke $c sebelum perubahan $a:

$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, variabel $d dan $a memiliki nilai yang berbeda karena nilai ditetapkan ke $d sebelum perubahan $a:

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

Operator penugasan null-coalescing

Operator penugasan koalesensi-null ??= menetapkan nilai dari operand di sebelah kanannya ke operand di sebelah kirinya hanya jika operand di sebelah kirinya bernilai null. Operator ??= tidak mengevaluasi operand di sebelah kanannya jika operand sebelah kiri bernilai bukan 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. 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 melakukan konversi pada nilai pertama, bukan 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 mengganti jenis tersebut dengan menentukan tipe 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 jenis array string []:

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

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

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

Variabel akan diberi nilai yang sesuai dengan jenis data System.DateTime. Nilai variabel $a 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 penugasan ganda.

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

$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 variabel $a dan nilai 2 ke variabel $b. Ini menetapkan nilai 3, 4, dan 5 ke variabel $c. Untuk menetapkan nilai dalam variabel $c ke tiga variabel lain, gunakan format berikut:

$d, $e, $f = $c

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

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 variabel $a dan nilai 2 ke variabel $b. Variabel $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 variabel $a.

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

Lihat juga