about_Type_Operators
Korte beschrijving
Beschrijft de operators die met Microsoft .NET-typen werken.
Lange beschrijving
De Booleaanse typeoperators (-is
en -isnot
) geven aan of een object een exemplaar is van een opgegeven .NET-type. De -is
operator retourneert een waarde van TRUE als het type overeenkomt en een waarde van ONWAAR , anders. De -isnot
operator retourneert een waarde onwaar als het type overeenkomt en een waarde van WAAR anders.
De -as
operator probeert het invoerobject te converteren naar het opgegeven .NET-type. Als het lukt, wordt het geconverteerde object geretourneerd. Als het mislukt, wordt het geretourneerd $null
. Er wordt geen fout geretourneerd.
PowerShell heeft de volgende typeoperators:
-is
|Retourneert TRUE wanneer de invoer een exemplaar is van het opgegeven .NET-type.(get-date) -is [DateTime] # Result is True
-isnot
|Retourneert TRUE wanneer de invoer geen exemplaar van het specified.NET type is.(get-date) -isnot [DateTime] # Result is False
-as
|Converteert de invoer naar het opgegeven .NET-type."5/7/07" -as [DateTime] # Result is Monday, May 7, 2007 12:00:00 AM
De syntaxis van de typeoperatoren is als volgt:
<input> <operator> [.NET type]
U kunt ook de volgende syntaxis gebruiken:
<input> <operator> ".NET type"
Het .NET-type kan worden geschreven als een typenaam tussen vierkante haken of een tekenreeks, zoals [DateTime]
of "DateTime"
voor System.DateTime. Als het type zich niet in de hoofdmap van de systeemnaamruimte bevindt, geeft u de volledige naam van het objecttype op. U kunt 'Systeem' weglaten. Als u bijvoorbeeld System.Diagnostics.Process wilt opgeven, voert u [System.Diagnostics.Process]
, [Diagnostics.Process]
of "Diagnostics.Process"
.
De typeoperators werken altijd op het invoerobject als geheel. Als het invoerobject een verzameling is, is dit het verzamelingstype dat wordt getest, niet de typen elementen van de verzameling.
-is/isnot operators
De Booleaanse typeoperators (-is
en -isnot
) retourneren altijd een Booleaanse waarde, zelfs als de invoer een verzameling objecten is.
Als <input>
dit een type is dat hetzelfde is als of is afgeleid van het .NET-type, retourneert $True
de -is
operator .
Het type DirectoryInfo is bijvoorbeeld afgeleid van het type FileSystemInfo. Daarom retourneren beide voorbeelden Waar.
PS> (Get-Item /) -is [System.IO.DirectoryInfo]
True
PS> (Get-Item /) -is [System.IO.FileSystemInfo]
True
De -is
operator kan ook overeenkomen met interfaces als de <input>
interface in de vergelijking wordt geïmplementeerd. In dit voorbeeld is de invoer een matrix. Matrices implementeren de interface System.Collections.IList .
PS> 1, 2 -is [System.Collections.IList]
True
-as Operator
De -as
operator probeert het invoerobject te converteren naar het opgegeven .NET-type. Als het lukt, wordt het geconverteerde object geretourneerd. Als het mislukt, wordt het geretourneerd $null
. Er wordt geen fout geretourneerd.
Als het <input>
een type is dat is afgeleid van het .NET-type -as
, wordt het invoerobject ongewijzigd geretourneerd. Het type DirectoryInfo is bijvoorbeeld afgeleid van het type FileSystemInfo. Daarom is het objecttype in het volgende voorbeeld ongewijzigd:
PS> $fsroot = (Get-Item /) -as [System.IO.FileSystemInfo]
PS> $fsroot.GetType().FullName
System.IO.DirectoryInfo
Het converteren van het datum/tijd-type is cultuurgevoelig
In tegenstelling tot typecasting werkt converteren naar [DateTime]
type met behulp van de -as
operator alleen met tekenreeksen die zijn opgemaakt volgens de regels van de huidige cultuur.
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."
Gebruik de Get-Member
cmdlet om het .NET-type van een object te vinden. Of gebruik de Methode GetType van alle objecten in combinatie met de eigenschap FullName van deze methode. Met de volgende instructie wordt bijvoorbeeld het type retourwaarde van een Get-Culture
opdracht opgehaald:
PS> (Get-Culture).GetType().FullName
System.Globalization.CultureInfo
Voorbeelden
In de volgende voorbeelden ziet u enkele toepassingen van de typeoperators:
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
In het volgende voorbeeld ziet u dat wanneer de invoer een verzameling objecten is, het overeenkomende type het .NET-type van de verzameling is, niet het type van de afzonderlijke objecten in de verzameling.
In dit voorbeeld is een verzameling van deze objecten een System.Object-matrix, hoewel zowel de als Get-UICulture
de Get-Culture
cmdlets System.Globalization.CultureInfo-objecten retourneren.
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
In de volgende voorbeelden ziet u hoe u de -as
operator gebruikt.
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)
In het volgende voorbeeld ziet u dat wanneer de -as
operator het invoerobject niet kan converteren naar het .NET-type, het retourneert $null
.
PS> 1031 -as [System.Diagnostics.Process]
PS>
Zie ook
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor