Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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>