about_Type_Operators
Kısa açıklama
Microsoft .NET türleriyle çalışan işleçleri açıklar.
Uzun açıklama
Boole türü işleçleri (-is
ve -isnot
) bir nesnenin belirtilen .NET türünün bir örneği olup olmadığını söyler. işleci, -is
tür eşleşiyorsa TRUE değerini ve aksi takdirde YANLIŞ değerini döndürür. işleci, -isnot
tür eşleşiyorsa YANLIŞ değerini ve aksi takdirde TRUE değerini döndürür.
işleci -as
, giriş nesnesini belirtilen .NET türüne dönüştürmeye çalışır. Başarılı olursa, dönüştürülen nesneyi döndürür. Başarısız olursa döndürür $null
. Hata döndürmez.
PowerShell aşağıdaki tür işleçlerine sahiptir:
-is
|Giriş belirtilen .NET türünün bir örneği olduğunda TRUE döndürür.(get-date) -is [DateTime] # Result is True
-isnot
|Giriş specified.NET türünün bir örneği olmadığında TRUE döndürür.(get-date) -isnot [DateTime] # Result is False
-as
|Girişi belirtilen .NET türüne dönüştürür."5/7/07" -as [DateTime] # Result is Monday, May 7, 2007 12:00:00 AM
Tür işleçlerinin söz dizimi aşağıdaki gibidir:
<input> <operator> [.NET type]
Aşağıdaki söz dizimini de kullanabilirsiniz:
<input> <operator> ".NET type"
.NET türü, system.datetime gibi köşeli ayraçlar veya dizeler halinde bir tür adı olarak [DateTime]
"DateTime"
yazılabilir. Tür sistem ad alanının kökünde değilse, nesne türünün tam adını belirtin. "Sistem" ifadesini atlayabilirsiniz. Örneğin, System.Diagnostics.Process belirtmek için , [Diagnostics.Process]
veya "Diagnostics.Process"
girin[System.Diagnostics.Process]
.
Tür işleçleri her zaman giriş nesnesi üzerinde bir bütün olarak çalışır. Diğer bir ifadeyle, giriş nesnesi bir koleksiyonsa, koleksiyonun öğelerinin türleri değil, test edilen koleksiyon türüdür.
-is/isnot işleçleri
Giriş bir nesne koleksiyonu olsa bile Boole türü işleçleri (-is
ve -isnot
) her zaman bir Boole değeri döndürür.
ile aynı olan veya .NET Türünden türetilen bir türse <input>
işleci -is
döndürür$True
.
Örneğin, DirectoryInfo türü FileSystemInfo türünden türetilir. Bu nedenle, bu örneklerin her ikisi de True döndürür.
PS> (Get-Item /) -is [System.IO.DirectoryInfo]
True
PS> (Get-Item /) -is [System.IO.FileSystemInfo]
True
işleci, -is
karşılaştırmada arabirimi uygularsa <input>
arabirimleri de eşleştirebilir. Bu örnekte giriş bir dizidir. Diziler System.Collections.IList arabirimini uygular.
PS> 1, 2 -is [System.Collections.IList]
True
-as Işleç
işleci -as
, giriş nesnesini belirtilen .NET türüne dönüştürmeye çalışır. Başarılı olursa, dönüştürülen nesneyi döndürür. Başarısız olursa döndürür $null
. Hata döndürmez.
<input>
.NET Türünden -as
türetilen bir türse, geçişler, giriş nesnesini değiştirmeden döndürür. Örneğin, DirectoryInfo türü FileSystemInfo türünden türetilir. Bu nedenle, nesne türü aşağıdaki örnekte değiştirilmez:
PS> $fsroot = (Get-Item /) -as [System.IO.FileSystemInfo]
PS> $fsroot.GetType().FullName
System.IO.DirectoryInfo
DateTime türünün dönüştürülmesi kültüre duyarlıdır
Tür dönüştürmeden farklı olarak, işlecini -as
kullanarak türe [DateTime]
dönüştürme yalnızca geçerli kültürün kurallarına göre biçimlendirilmiş dizelerle çalışır.
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."
Bir nesnenin .NET türünü bulmak için cmdlet'ini Get-Member
kullanın. Veya bu yöntemin FullName özelliğiyle birlikte tüm nesnelerin GetType yöntemini kullanın. Örneğin, aşağıdaki deyim bir Get-Culture
komutun dönüş değerinin türünü alır:
PS> (Get-Culture).GetType().FullName
System.Globalization.CultureInfo
Örnekler
Aşağıdaki örneklerde Tür işleçlerinin bazı kullanımları gösterilmektedir:
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
Aşağıdaki örnek, giriş bir nesne koleksiyonu olduğunda eşleşen türün koleksiyondaki tek tek nesnelerin türü değil, koleksiyonun .NET türü olduğunu gösterir.
Bu örnekte, hem hem de Get-Culture
Get-UICulture
cmdlet'leri System.Globalization.CultureInfo nesnelerini döndürse de, bu nesnelerin koleksiyonu bir System.Object dizisidir.
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
Aşağıdaki örneklerde işlecinin nasıl kullanılacağı gösterilmektedir -as
.
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)
Aşağıdaki örnekte, işleç giriş nesnesini .NET türüne dönüştüremediğinde değerini döndürdüğü $null
gösterilmektedir-as
.
PS> 1031 -as [System.Diagnostics.Process]
PS>
Ayrıca bkz.
PowerShell
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin