about_Type_Operators
Description courte
Décrit les opérateurs qui fonctionnent avec les types Microsoft .NET.
Description longue
Les opérateurs de type booléen (-is
et -isnot
) indiquent si un objet est une instance d’un type .NET spécifié. L’opérateur -is
retourne une valeur TRUEsi le type correspond et une valeur false dans le cas contraire. L’opérateur -isnot
retourne une valeur FALSEsi le type correspond et une valeur true sinon.
L’opérateur -as
tente de convertir l’objet d’entrée en type .NET spécifié. Si elle réussit, elle retourne l’objet converti. En cas d’échec, elle retourne $null
. Elle ne retourne pas d’erreur.
PowerShell a les opérateurs de type suivants :
-is
|Retourne TRUE lorsque l’entrée est une instance du type .NET spécifié.(get-date) -is [DateTime] # Result is True
-isnot
|Retourne TRUE lorsque l’entrée n’est pas une instance du type specified.NET.(get-date) -isnot [DateTime] # Result is False
-as
|Convertit l’entrée en type .NET spécifié."5/7/07" -as [DateTime] # Result is Monday, May 7, 2007 12:00:00 AM
La syntaxe des opérateurs de type est la suivante :
<input> <operator> [.NET type]
Vous pouvez également utiliser la syntaxe suivante :
<input> <operator> ".NET type"
Le type .NET peut être écrit en tant que nom de type entre crochets ou une chaîne, par [DateTime]
exemple pour "DateTime"
System.DateTime. Si le type n’est pas à la racine de l’espace de noms système, spécifiez le nom complet du type d’objet. Vous pouvez omettre « System ». Par exemple, pour spécifier System.Diagnostics.Process, entrer [System.Diagnostics.Process]
, [Diagnostics.Process]
ou "Diagnostics.Process"
.
Les opérateurs de type fonctionnent toujours sur l’objet d’entrée dans son ensemble. Autrement dit, si l’objet d’entrée est une collection, il s’agit du type de collection testé, et non des types des éléments de la collection.
-is/isnot, opérateurs
Les opérateurs de type booléen (-is
et -isnot
) retournent toujours une valeur booléenne , même si l’entrée est une collection d’objets.
S’il <input>
s’agit d’un type identique ou dérivé du type .NET, l’opérateur -is
retourne $True
.
Par exemple, le type DirectoryInfo est dérivé du type FileSystemInfo . Par conséquent, ces deux exemples retournent True.
PS> (Get-Item /) -is [System.IO.DirectoryInfo]
True
PS> (Get-Item /) -is [System.IO.FileSystemInfo]
True
L’opérateur -is
peut également correspondre aux interfaces si l’implémente <input>
l’interface dans la comparaison. Dans cet exemple, l’entrée est un tableau. Les tableaux implémentent l’interface System.Collections.IList .
PS> 1, 2 -is [System.Collections.IList]
True
-as opérateur
L’opérateur -as
tente de convertir l’objet d’entrée en type .NET spécifié. Si elle réussit, elle retourne l’objet converti. En cas d’échec, elle retourne $null
. Elle ne retourne pas d’erreur.
Si le <input>
type est un type dérivé du type -as
.NET passe par l’objet d’entrée inchangé. Par exemple, le type DirectoryInfo est dérivé du type FileSystemInfo . Par conséquent, le type d’objet n’est pas modifié dans l’exemple suivant :
PS> $fsroot = (Get-Item /) -as [System.IO.FileSystemInfo]
PS> $fsroot.GetType().FullName
System.IO.DirectoryInfo
La conversion du type DateTime respecte la culture
Contrairement au cast de type, la conversion en [DateTime]
type à l’aide de l’opérateur -as
fonctionne uniquement avec des chaînes mises en forme conformément aux règles de la culture actuelle.
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."
Pour rechercher le type .NET d’un objet, utilisez l’applet Get-Member
de commande. Vous pouvez également utiliser la méthode GetType de tous les objets avec la propriété FullName de cette méthode. Par exemple, l’instruction suivante obtient le type de la valeur de retour d’une Get-Culture
commande :
PS> (Get-Culture).GetType().FullName
System.Globalization.CultureInfo
Exemples
Les exemples suivants montrent quelques utilisations des opérateurs de type :
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
L’exemple suivant montre que lorsque l’entrée est une collection d’objets, le type correspondant est le type .NET de la collection, et non le type des objets individuels de la collection.
Dans cet exemple, bien que les applets de commande retournent Get-UICulture
des Get-Culture
objets System.Globalization.CultureInfo, une collection de ces objets est un tableau 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
Les exemples suivants montrent comment utiliser l’opérateur -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)
L’exemple suivant montre que lorsque l’opérateur -as
ne peut pas convertir l’objet d’entrée en type .NET, il retourne $null
.
PS> 1031 -as [System.Diagnostics.Process]
PS>
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour