about_Type_Operators
Deskripsi singkat
Menjelaskan operator yang bekerja dengan jenis Microsoft .NET.
Deskripsi panjang
Operator jenis Boolean (-is
dan -isnot
) memberi tahu apakah objek adalah instans dari jenis .NET tertentu. Operator -is
mengembalikan nilai TRUE jika jenis cocok dan nilai FALSE jika tidak. Operator -isnot
mengembalikan nilai FALSE jika jenis cocok dan nilai TRUE jika tidak.
Operator -as
mencoba mengonversi objek input ke jenis .NET yang ditentukan. Jika berhasil, objek yang dikonversi akan dikembalikan. Jika gagal, ia akan mengembalikan $null
. Ini tidak mengembalikan kesalahan.
PowerShell memiliki operator jenis berikut:
-is
|Mengembalikan TRUE ketika input adalah instans dari jenis .NET yang ditentukan.(get-date) -is [DateTime] # Result is True
-isnot
|Mengembalikan TRUE saat input bukan instans jenis specified.NET.(get-date) -isnot [DateTime] # Result is False
-as
|Mengonversi input ke jenis .NET yang ditentukan."5/7/07" -as [DateTime] # Result is Monday, May 7, 2007 12:00:00 AM
Sintaks operator jenis adalah sebagai berikut:
<input> <operator> [.NET type]
Anda juga dapat menggunakan sintaks berikut:
<input> <operator> ".NET type"
Jenis .NET dapat ditulis sebagai nama jenis dalam tanda kurung atau string, seperti [DateTime]
atau "DateTime"
untuk System.DateTime. Jika jenis tidak berada di akar namespace layanan sistem, tentukan nama lengkap jenis objek. Anda dapat menghilangkan "Sistem.". Misalnya, untuk menentukan System.Diagnostics.Process, masukkan [System.Diagnostics.Process]
, , [Diagnostics.Process]
atau "Diagnostics.Process"
.
Operator jenis selalu beroperasi pada objek input secara keseluruhan. Artinya, jika objek input adalah koleksi, itu adalah jenis koleksi yang diuji, bukan jenis elemen koleksi.
Operator -is/isnot
Operator jenis Boolean (-is
dan -isnot
) selalu mengembalikan nilai Boolean , bahkan jika input adalah kumpulan objek.
Jika <input>
adalah jenis yang sama dengan atau berasal dari Jenis .NET, -is
operator mengembalikan $True
.
Misalnya, jenis DirectoryInfo berasal dari jenis FileSystemInfo . Oleh karena itu, kedua contoh ini mengembalikan True.
PS> (Get-Item /) -is [System.IO.DirectoryInfo]
True
PS> (Get-Item /) -is [System.IO.FileSystemInfo]
True
Operator -is
juga dapat mencocokkan <input>
antarmuka jika mengimplementasikan antarmuka dalam perbandingan. Dalam contoh ini, input adalah array. Array mengimplementasikan antarmuka System.Collections.IList .
PS> 1, 2 -is [System.Collections.IList]
True
-as operator
Operator -as
mencoba mengonversi objek input ke jenis .NET yang ditentukan. Jika berhasil, objek yang dikonversi akan dikembalikan. Jika gagal, ia mengembalikan $null
. Ini tidak mengembalikan kesalahan.
<input>
Jika adalah jenis yang berasal dari Jenis -as
.NET melewati mengembalikan objek input yang tidak berubah. Misalnya, jenis DirectoryInfo berasal dari jenis FileSystemInfo . Oleh karena itu, jenis objek tidak berubah dalam contoh berikut:
PS> $fsroot = (Get-Item /) -as [System.IO.FileSystemInfo]
PS> $fsroot.GetType().FullName
System.IO.DirectoryInfo
Mengonversi jenis DateTime peka terhadap budaya
Tidak seperti pengecoran jenis, mengonversi ke [DateTime]
jenis menggunakan -as
operator hanya berfungsi dengan string yang diformat sesuai dengan aturan budaya saat ini.
PS> [cultureinfo]::CurrentCulture = 'fr-FR'
PS> '13/5/20' -as [datetime]
mercredi 13 mai 2020 00:00:00
PS> '05/13/20' -as [datetime]
PS> [datetime]'05/13/20'
mercredi 13 mai 2020 00:00:00
PS> [datetime]'13/05/20'
InvalidArgument: Cannot convert value "13/05/20" to type "System.DateTime".
Error: "String '13/05/20' was not recognized as a valid DateTime."
Untuk menemukan jenis .NET objek, gunakan Get-Member
cmdlet . Atau, gunakan metode GetType dari semua objek bersama dengan properti FullName dari metode ini. Misalnya, pernyataan berikut mendapatkan jenis nilai pengembalian perintah Get-Culture
:
PS> (Get-Culture).GetType().FullName
System.Globalization.CultureInfo
Contoh
Contoh berikut menunjukkan beberapa penggunaan operator Jenis:
PS> 32 -is [Float]
False
PS> 32 -is "int"
True
PS> (get-date) -is [DateTime]
True
PS> "12/31/2007" -is [DateTime]
False
PS> "12/31/2007" -is [String]
True
PS> (get-process PowerShell)[0] -is [System.Diagnostics.Process]
True
PS> (get-command get-member) -is [System.Management.Automation.CmdletInfo]
True
Contoh berikut menunjukkan bahwa ketika input adalah kumpulan objek, jenis pencocokan adalah jenis .NET dari koleksi, bukan jenis objek individual dalam koleksi.
Dalam contoh ini, meskipun Get-Culture
cmdlet dan Get-UICulture
mengembalikan objek System.Globalization.CultureInfo , kumpulan objek ini adalah array System.Object.
PS> (get-culture) -is [System.Globalization.CultureInfo]
True
PS> (get-uiculture) -is [System.Globalization.CultureInfo]
True
PS> (get-culture), (get-uiculture) -is [System.Globalization.CultureInfo]
False
PS> (get-culture), (get-uiculture) -is [Array]
True
PS> (get-culture), (get-uiculture) | foreach {
$_ -is [System.Globalization.CultureInfo])
}
True
True
PS> (get-culture), (get-uiculture) -is [Object]
True
Contoh berikut menunjukkan cara menggunakan -as
operator.
PS> "12/31/07" -is [DateTime]
False
PS> "12/31/07" -as [DateTime]
Monday, December 31, 2007 12:00:00 AM
PS> $date = "12/31/07" -as [DateTime]
C:\PS>$a -is [DateTime]
True
PS> 1031 -as [System.Globalization.CultureInfo]
LCID Name DisplayName
---- ---- -----------
1031 de-DE German (Germany)
Contoh berikut menunjukkan bahwa ketika -as
operator tidak dapat mengonversi objek input ke jenis .NET, operator mengembalikan $null
.
PS> 1031 -as [System.Diagnostics.Process]
PS>
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