about_Operators
Deskripsi singkat
Menjelaskan operator yang didukung oleh PowerShell.
Deskripsi panjang
Operator adalah elemen bahasa yang dapat Anda gunakan dalam perintah atau ekspresi. PowerShell mendukung beberapa jenis operator untuk membantu Anda memanipulasi nilai.
Operasi Aritmatika
Gunakan operator aritmatika (+
, , -
, *
/
, %
) untuk menghitung nilai dalam perintah atau ekspresi. Dengan operator ini, Anda dapat menambahkan, mengurangi, mengalikan, atau membagi nilai, dan menghitung sisa (modulus) operasi pembagian.
Operator penambahan menggabungkan elemen. Operator perkalian mengembalikan jumlah salinan yang ditentukan dari setiap elemen. Anda dapat menggunakan operator aritmetika pada jenis .NET apa pun yang mengimplementasikannya, seperti: Int
, , String
DateTime
, Hashtable
, dan Array.
Operator bitwise (-band
, , -bor
, -bxor
-bnot
, -shl
, ) -shr
memanipulasi pola bit dalam nilai.
Untuk informasi selengkapnya, lihat about_Arithmetic_Operators.
Operator Penugasan
Gunakan operator penugasan (=
, , +=
, -=
, /=
*=
, ) %=
untuk menetapkan, mengubah, atau menambahkan nilai ke variabel. Anda dapat menggabungkan operator aritmatika dengan penugasan untuk menetapkan hasil operasi aritmatika ke variabel.
Untuk informasi selengkapnya, lihat about_Assignment_Operators.
Operator perbandingan
Gunakan operator perbandingan (-eq
, , -ne
, -lt
-gt
, -le
, -ge
) untuk membandingkan nilai dan kondisi pengujian. Misalnya, Anda dapat membandingkan dua nilai string untuk menentukan apakah nilai tersebut sama.
Operator perbandingan juga menyertakan operator yang menemukan atau mengganti pola dalam teks. Operator (-match
, -notmatch
, ) -replace
menggunakan ekspresi reguler, dan (-like
, -notlike
) menggunakan kartubebas *
.
Operator perbandingan penahanan menentukan apakah nilai pengujian muncul dalam set referensi (-in
, , -notin
-contains
, -notcontains
).
Operator perbandingan jenis (-is
, -isnot
) menentukan apakah objek adalah jenis tertentu.
Untuk informasi selengkapnya, lihat about_Comparison_Operators.
Operator Logis
Gunakan operator logis (-and
, , -or
, -xor
-not
, !
) untuk menyambungkan pernyataan kondisional ke dalam satu kondisional kompleks. Misalnya, Anda dapat menggunakan operator logis -and
untuk membuat filter objek dengan dua kondisi yang berbeda.
Untuk informasi selengkapnya, lihat about_Logical_Operators.
Operator Pengalihan
Gunakan operator pengalihan (>
, , >>
, 2>
2>>
, dan 2>&1
) untuk mengirim output perintah atau ekspresi ke file teks. Operator pengalihan berfungsi seperti Out-File
cmdlet (tanpa parameter) tetapi operator tersebut juga memungkinkan Anda mengalihkan output kesalahan ke file yang ditentukan. Anda juga dapat menggunakan Tee-Object
cmdlet untuk mengalihkan output.
Untuk informasi selengkapnya, lihat about_Redirection
Operator Pisah dan Gabung
Operator -split
dan -join
membagi dan menggabungkan substring. Operator -split
membagi string menjadi substring. Operator -join
menggabungkan beberapa string ke dalam satu string.
Untuk informasi selengkapnya, lihat about_Split dan about_Join.
Operator Tipe
Gunakan operator jenis (-is
, -isnot
, -as
) untuk menemukan atau mengubah jenis .NET objek.
Untuk informasi selengkapnya, lihat about_Type_Operators.
Operator Tunggal
Gunakan unary ++
dan --
operator untuk menaikkan atau menurunkan nilai dan -
untuk negasi. Misalnya, untuk menaikkan variabel $a
dari 9
ke 10
, Anda mengetik $a++
.
Untuk informasi selengkapnya, lihat about_Arithmetic_Operators.
Operator Khusus
Operator khusus memiliki kasus penggunaan khusus yang tidak sesuai dengan grup operator lain. Misalnya, operator khusus memungkinkan Anda menjalankan perintah, mengubah jenis data nilai, atau mengambil elemen dari array.
Operator pengelompokan ( )
Seperti dalam bahasa lain, (...)
berfungsi untuk mengambil alih prioritas operator dalam ekspresi. Misalnya: (1 + 2) / 3
Namun, di PowerShell, ada perilaku tambahan.
Mengelompokkan ekspresi hasil
(...)
memungkinkan Anda untuk membiarkan output dari perintah berpartisipasi dalam ekspresi.
Contoh:
PS> (Get-Item *.txt).Count -gt 10
True
Catatan
Membungkus perintah dalam tanda kurung menyebabkan variabel $?
otomatis diatur ke $true
, bahkan ketika perintah tertutup itu sendiri diatur $?
ke $false
.
Misalnya, (Get-Item /Nosuch); $?
secara tak terduga menghasilkan True. Untuk informasi selengkapnya tentang $?
, lihat about_Automatic_Variables.
Piping ekspresi yang dikelompokkan
Saat digunakan sebagai segmen pertama dari alur, membungkus perintah atau ekspresi dalam tanda kurung selalu menyebabkan enumerasi hasil ekspresi. Jika tanda kurung membungkus perintah, perintah dijalankan ke penyelesaian dengan semua output yang dikumpulkan dalam memori sebelum hasil dikirim melalui alur.
Misalnya, output untuk pernyataan ini berbeda:
PS> ConvertFrom-Json '["a", "b"]' | ForEach-Object { "The value is '$_'" }
The value is 'a b'
PS> (ConvertFrom-Json '["a", "b"]') | ForEach-Object { "The value is '$_'" }
The value is 'a'
The value is 'b'
Mengelompokkan ekspresi sebelum pipa juga memastikan bahwa pemrosesan objek demi objek berikutnya tidak dapat mengganggu enumerasi yang digunakan perintah untuk menghasilkan outputnya.
Misalnya, memipakan output dari Get-ChildItem
ke Rename-Item
dapat memiliki efek tak terduga di mana item diganti namanya, lalu ditemukan lagi dan diganti namanya untuk kedua kalinya.
Mengelompokkan pernyataan penetapan
Pernyataan penetapan yang tidak dikeroyong tidak menghasilkan nilai. Saat mengelompokkan pernyataan penetapan, nilai variabel yang ditetapkan diteruskan dan dapat digunakan dalam ekspresi yang lebih besar. Contohnya:
PS> ($var = 1 + 2)
3
PS> ($var = 1 + 2) -eq 3
True
Membungkus pernyataan dalam tanda kurung mengubahnya menjadi ekspresi yang menghasilkan nilai $var
.
Perilaku ini berlaku untuk semua operator penugasan, termasuk operator gabungan seperti +=
, dan operator kenaikan (++
) dan penurunan (--
).
Namun, urutan operasi untuk kenaikan dan penurunan tergantung pada posisi mereka.
PS> $i = 0
PS> (++$i) # prefix
1
PS> $i = 0
PS> ($i++) # postfix
0
PS> $i
1
Dalam kasus awalan, nilai bertahap $i
sebelum output. Dalam kasus postfix, nilai $i
ditambahkan setelah output.
Anda juga dapat menggunakan teknik ini Dalam konteks pernyataan bersyarkat, seperti if
pernyataan .
if ($textFiles = Get-ChildItem *.txt) {
$textFiles.Count
}
Dalam contoh ini, jika tidak ada file yang cocok, Get-ChildItem
perintah tidak mengembalikan apa pun dan tidak menetapkan apa pun ke $textFiles
, yang dipertimbangkan $false
dalam konteks boolean. Jika satu atau beberapa objek FileInfo ditetapkan ke $textFiles
, kondisional dievaluasi ke $true
. Anda dapat bekerja dengan nilai $textFiles
dalam isi if
pernyataan.
Catatan
Meskipun teknik ini nyaman dan ringkas, teknik ini dapat menyebabkan kebingungan antara operator penugasan (=
) dan operator perbandingan kesetaraan (-eq
).
Operator subekspresi $( )
Mengembalikan hasil dari satu atau beberapa pernyataan. Untuk satu hasil, mengembalikan skalar. Untuk beberapa hasil, mengembalikan array. Gunakan ini saat Anda ingin menggunakan ekspresi dalam ekspresi lain. Misalnya, untuk menyematkan hasil perintah dalam ekspresi string.
PS> "Today is $(Get-Date)"
Today is 12/02/2019 13:15:20
PS> "Folder list: $((dir c:\ -dir).Name -join ', ')"
Folder list: Program Files, Program Files (x86), Users, Windows
Operator subekspresi array @( )
Mengembalikan hasil dari satu atau beberapa pernyataan sebagai array. Hasilnya selalu merupakan array dari 0 objek atau lebih.
PS> $list = @(Get-Process | Select-Object -First 10; Get-Service | Select-Object -First 10 )
PS> $list.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
PS> $list.Count
20
PS> $list = @(Get-Service | Where-Object Status -eq Starting )
PS> $list.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
PS> $list.Count
0
Sintaksis literal tabel hash @{}
Mirip dengan subekspresi array, sintaks ini digunakan untuk mendeklarasikan tabel hash. Untuk informasi selengkapnya, lihat about_Hash_Tables.
Operator panggilan &
Menjalankan perintah, skrip, atau blok skrip. Operator panggilan, juga dikenal sebagai "operator pemanggilan", memungkinkan Anda menjalankan perintah yang disimpan dalam variabel dan diwakili oleh string atau blok skrip. Operator panggilan dijalankan dalam cakupan anak. Untuk informasi selengkapnya tentang cakupan, lihat about_Scopes.
Contoh ini menyimpan perintah dalam string dan menjalankannya menggunakan operator panggilan.
PS> $c = "get-executionpolicy"
PS> $c
get-executionpolicy
PS> & $c
AllSigned
Operator panggilan tidak mengurai string. Ini berarti Anda tidak dapat menggunakan parameter perintah dalam string saat Anda menggunakan operator panggilan.
PS> $c = "Get-Service -Name Spooler"
PS> $c
Get-Service -Name Spooler
PS> & $c
& : The term 'Get-Service -Name Spooler' is not recognized as the name of a
cmdlet, function, script file, or operable program. Check the spelling of
the name, or if a path was included, verify that the path is correct and
try again.
At line:1 char:2
+ & $c
+ ~~
+ CategoryInfo : ObjectNotFound: (Get-Service -Name Spooler:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Cmdlet Invoke-Expression dapat menjalankan kode yang menyebabkan kesalahan penguraian saat menggunakan operator panggilan.
PS> & "1+1"
&: The term '1+1' is not recognized as a name of a cmdlet, function, script
file, or executable program. Check the spelling of the name, or if a path was
included, verify that the path is correct and try again.
At line:1 char:2
+ & "1+1"
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (1+1:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
PS> Invoke-Expression "1+1"
2
Anda dapat menjalankan skrip menggunakan nama filenya. File skrip harus memiliki .ps1
ekstensi file agar dapat dieksekusi. File yang memiliki spasi di jalurnya harus diapit dalam tanda kutip. Jika Anda mencoba menjalankan jalur yang dikutip, PowerShell menampilkan konten string yang dikutip alih-alih menjalankan skrip. Operator panggilan memungkinkan Anda menjalankan konten string yang berisi nama file.
PS C:\Scripts> Get-ChildItem
Directory: C:\Scripts
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 8/28/2018 1:36 PM 58 script name with spaces.ps1
PS C:\Scripts> ".\script name with spaces.ps1"
.\script name with spaces.ps1
PS C:\Scripts> & ".\script name with spaces.ps1"
Hello World!
Untuk informasi selengkapnya tentang blok skrip, lihat about_Script_Blocks.
Operator cast [ ]
Mengonversi atau membatasi objek ke jenis yang ditentukan. Jika objek tidak dapat dikonversi, PowerShell menghasilkan kesalahan.
[DateTime] '2/20/88' - [DateTime] '1/20/88' -eq [TimeSpan] '31'
Cast juga dapat dilakukan saat variabel ditetapkan untuk menggunakan notasi cast.
Operator koma ,
Sebagai operator biner, koma membuat array atau menambahkan ke array yang sedang dibuat. Dalam mode ekspresi, sebagai operator unary, koma membuat array hanya dengan satu anggota. Tempatkan koma sebelum anggota.
$myArray = 1,2,3
$SingleArray = ,1
Write-Output (,1)
Karena Write-Output
mengharapkan argumen, Anda harus meletakkan ekspresi dalam tanda kurung.
Operator sumber titik .
Menjalankan skrip dalam cakupan saat ini sehingga fungsi, alias, dan variabel apa pun yang dibuat skrip ditambahkan ke cakupan saat ini, menimpa yang ada. Parameter yang dideklarasikan oleh skrip menjadi variabel. Parameter yang tidak ada nilai yang diberikan menjadi variabel tanpa nilai. Namun, variabel $args
otomatis dipertahankan.
. c:\scripts\sample.ps1 1 2 -Also:3
Catatan
Operator sumber titik diikuti oleh spasi. Gunakan spasi untuk membedakan titik dari simbol titik (.
) yang mewakili direktori saat ini.
Dalam contoh berikut, skrip Sample.ps1 di direktori saat ini dijalankan dalam cakupan saat ini.
. .\sample.ps1
Operator format -f
Memformat string dengan menggunakan metode format objek string. Masukkan string format di sisi kiri operator dan objek yang akan diformat di sisi kanan operator.
"{0} {1,-10} {2:N}" -f 1,"hello",[math]::pi
1 hello 3.14
Anda dapat melakukan zero-pad nilai numerik dengan penentu kustom "0". Jumlah nol setelah :
menunjukkan lebar maksimum untuk mengalihkan string yang diformat.
"{0:00} {1:000} {2:000000}" -f 7, 24, 365
07 024 000365
Jika Anda perlu menyimpan kurung kurawal ({}
) dalam string yang diformat, Anda dapat melepaskannya dengan menggandakan kurung kurawal.
"{0} vs. {{0}}" -f 'foo'
foo vs. {0}
Untuk informasi selengkapnya, lihat metode String.Format dan Pemformatan Komposit.
Operator indeks [ ]
Memilih objek dari koleksi terindeks, seperti array dan tabel hash. Indeks array berbasis nol, sehingga objek pertama diindeks sebagai [0]
. Anda juga dapat menggunakan indeks negatif untuk mendapatkan nilai terakhir. Tabel hash diindeks oleh nilai kunci.
Mengingat daftar indeks, operator indeks mengembalikan daftar anggota yang sesuai dengan indeks tersebut.
PS> $a = 1, 2, 3
PS> $a[0]
1
PS> $a[-1]
3
PS> $a[2, 1, 0]
3
2
1
(Get-HotFix | Sort-Object installedOn)[-1]
$h = @{key="value"; name="PowerShell"; version="2.0"}
$h["name"]
PowerShell
$x = [xml]"<doc><intro>Once upon a time...</intro></doc>"
$x["doc"]
intro
-----
Once upon a time...
Saat objek bukan koleksi terindeks, menggunakan operator indeks untuk mengakses elemen pertama mengembalikan objek itu sendiri. Nilai indeks di luar elemen pertama mengembalikan $null
.
PS> (2)[0]
2
PS> (2)[-1]
2
PS> (2)[1] -eq $null
True
PS> (2)[0,0] -eq $null
True
Operator alur |
Mengirim ("pipa") output perintah yang mendahuluinya ke perintah yang mengikutinya. Ketika output menyertakan lebih dari satu objek ("koleksi"), operator alur mengirim objek satu per satu.
Get-Process | Get-Member
Get-Service | Where-Object {$_.StartType -eq 'Automatic'}
Operator rentang ..
Operator rentang dapat digunakan untuk mewakili array bilangan bulat berurutan. Nilai yang digabungkan oleh operator rentang menentukan nilai awal dan akhir rentang.
1..10
$max = 10
foreach ($a in 1..$max) {Write-Host $a}
Anda juga dapat membuat rentang dalam urutan terbalik.
10..1
5..-5 | ForEach-Object {Write-Output $_}
Nilai awal dan akhir rentang dapat berupa sepasang ekspresi apa pun yang dievaluasi ke bilangan bulat atau karakter. Titik akhir rentang harus dapat dikonversi ke bilangan bulat 32-bit yang ditandatangani ([int32]
). Nilai yang lebih besar menyebabkan kesalahan. Selain itu, jika rentang diambil dalam array, ukuran array yang dihasilkan terbatas pada 268435448
(atau 256mb - 8
). Ini adalah ukuran maksimum array dalam .NET Framework.
Misalnya, Anda dapat menggunakan anggota enumerasi untuk nilai awal dan akhir Anda.
PS> enum Food {
Apple
Banana = 3
Kiwi = 10
}
PS> [Food]::Apple..[Food]::Kiwi
0
1
2
3
4
5
6
7
8
9
10
Penting
Rentang yang dihasilkan tidak terbatas pada nilai enumerasi. Sebaliknya mewakili rentang nilai antara dua nilai yang disediakan. Anda tidak dapat menggunakan operator rentang untuk mewakili anggota enumerasi dengan andal.
Operator akses anggota .
Mengakses properti dan metode objek. Nama anggota mungkin merupakan ekspresi.
$myProcess.peakWorkingSet
(Get-Process PowerShell).kill()
'OS', 'Platform' | Foreach-Object { $PSVersionTable. $_ }
Memulai PowerShell 3.0, saat Anda menggunakan operator pada objek kumpulan daftar yang tidak memiliki anggota, PowerShell secara otomatis menghitung item dalam koleksi tersebut dan menggunakan operator pada masing-masingnya. Untuk informasi selengkapnya, lihat about_Member-Access_Enumeration.
Operator anggota statis ::
Memanggil properti statis dan metode kelas .NET. Untuk menemukan properti statis dan metode objek, gunakan parameter Get-Member
Statis cmdlet. Nama anggota mungkin merupakan ekspresi.
[datetime]::Now
'MinValue', 'MaxValue' | Foreach-Object { [int]:: $_ }
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk