about_Type_Operators
Descrizione breve
Descrive gli operatori che funzionano con i tipi Microsoft .NET.
Descrizione lunga
Gli operatori di tipo booleano (-is
e -isnot
) indicano se un oggetto è un'istanza di un tipo .NET specificato. L'operatore -is
restituisce un valore TRUE se il tipo corrisponde a e il valore FAL edizione Standard in caso contrario. L'operatore -isnot
restituisce un valore FAL edizione Standard se il tipo corrisponde a e il valore TRUE in caso contrario.
L'operatore -as
tenta di convertire l'oggetto di input nel tipo .NET specificato. Se ha esito positivo, restituisce l'oggetto convertito. Se l'operazione ha esito negativo, viene restituito $null
. Non restituisce un errore.
PowerShell include gli operatori di tipo seguenti:
-is
|Restituisce TRUE quando l'input è un'istanza del tipo .NET specificato.(get-date) -is [DateTime] # Result is True
-isnot
|Restituisce TRUE quando l'input non è un'istanza del tipo specified.NET.(get-date) -isnot [DateTime] # Result is False
-as
|Converte l'input nel tipo .NET specificato."5/7/07" -as [DateTime] # Result is Monday, May 7, 2007 12:00:00 AM
La sintassi degli operatori di tipo è la seguente:
<input> <operator> [.NET type]
È anche possibile usare la sintassi seguente:
<input> <operator> ".NET type"
Il tipo .NET può essere scritto come nome di tipo tra parentesi quadre o stringa, ad esempio [DateTime]
o "DateTime"
per System.DateTime. Se il tipo non si trova nella radice dello spazio dei nomi di sistema, specificare il nome completo del tipo di oggetto. È possibile omettere "System.". Ad esempio, per specificare System.Diagnostics.Process, immettere [System.Diagnostics.Process]
, o ."Diagnostics.Process"
[Diagnostics.Process]
Gli operatori di tipo operano sempre sull'oggetto di input nel suo complesso. Ovvero, se l'oggetto di input è una raccolta, è il tipo di raccolta testato, non i tipi degli elementi della raccolta.
Operatori -is/isnot
Gli operatori di tipo booleano (-is
e -isnot
) restituiscono sempre un valore booleano , anche se l'input è una raccolta di oggetti.
Se <input>
è un tipo uguale a o derivato dal tipo .NET, l'operatore -is
restituisce $True
.
Ad esempio, il tipo DirectoryInfo è derivato dal tipo FileSystemInfo . Pertanto, entrambi questi esempi restituiscono True.
PS> (Get-Item /) -is [System.IO.DirectoryInfo]
True
PS> (Get-Item /) -is [System.IO.FileSystemInfo]
True
L'operatore -is
può anche corrispondere alle interfacce se <input>
implementa l'interfaccia nel confronto. In questo esempio l'input è una matrice. Le matrici implementano l'interfaccia System.Collections.IList .
PS> 1, 2 -is [System.Collections.IList]
True
-as Operatore
L'operatore -as
tenta di convertire l'oggetto di input nel tipo .NET specificato. Se ha esito positivo, restituisce l'oggetto convertito. Se ha esito negativo, restituisce $null
. Non restituisce un errore.
<input>
Se è un tipo derivato dal tipo -as
.NET passa attraverso restituisce l'oggetto di input invariato. Ad esempio, il tipo DirectoryInfo è derivato dal tipo FileSystemInfo . Di conseguenza, il tipo di oggetto è invariato nell'esempio seguente:
PS> $fsroot = (Get-Item /) -as [System.IO.FileSystemInfo]
PS> $fsroot.GetType().FullName
System.IO.DirectoryInfo
La conversione del tipo DateTime è sensibile alle impostazioni cultura
A differenza del cast dei tipi, la conversione in [DateTime]
tipo tramite l'operatore -as
funziona solo con stringhe formattate in base alle regole delle impostazioni cultura correnti.
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."
Per trovare il tipo .NET di un oggetto, usare il Get-Member
cmdlet . In alternativa, utilizzare il metodo GetType di tutti gli oggetti insieme alla proprietà FullName di questo metodo. Ad esempio, l'istruzione seguente ottiene il tipo del valore restituito di un Get-Culture
comando:
PS> (Get-Culture).GetType().FullName
System.Globalization.CultureInfo
Esempi
Gli esempi seguenti illustrano alcuni usi degli operatori 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
Nell'esempio seguente viene illustrato che quando l'input è una raccolta di oggetti, il tipo corrispondente è il tipo .NET della raccolta, non il tipo dei singoli oggetti nell'insieme.
In questo esempio, anche se entrambi i Get-Culture
cmdlet e Get-UICulture
restituiscono oggetti System.Globalization.CultureInfo , una raccolta di questi oggetti è una matrice 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
Negli esempi seguenti viene illustrato come usare l'operatore -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)
Nell'esempio seguente viene illustrato che quando l'operatore -as
non è in grado di convertire l'oggetto di input nel tipo .NET, restituisce $null
.
PS> 1031 -as [System.Diagnostics.Process]
PS>
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per