about_Type_Operators

Aggiornamento: maggio 2014

Si applica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

ARGOMENTO

about_Type_Operators

DESCRIZIONE BREVE

Descrive gli operatori che usano i tipi di Microsoft .NET Framework.

DESCRIZIONE LUNGA

Gli operatori di tipo booleano (-is e -isNot) indicano se un oggetto è un'istanza di un tipo di .NET Framework specificato. L'operatore -is restituisce un valore TRUE se il tipo corrisponde e un valore FALSE in caso contrario. L'operatore -isNot restituisce un valore FALSE se il tipo corrisponde e un valore TRUE in caso contrario.

L'operatore -as prova a convertire l'oggetto di input nel tipo di .NET Framework specificato. Se l'operazione ha esito positivo, restituisce l'oggetto convertito. Se l'operazione ha esito negativo, non verrà restituito alcun oggetto. Non restituisce alcun errore.

La tabella seguente elenca gli operatori di tipo in Windows PowerShell®.

    Operator  Description                 Example  
    --------  ------------------------    -------------------------------------
    -is       Returns TRUE when the       C:\PS> (get-date) -is [DateTime]
              input is an instance        True
              of the specified
              .NET Framework type.

    -isNot    Returns TRUE when the       C:\PS> (get-date) -isNot [DateTime]
              input is not an instance    False
              of the specified
              .NET Framework type.
 
    -as       Converts the input to       C:\PS> 12/31/07 -as [DateTime]
              the specified               Monday, December 31, 2007 12:00:00 AM
              .NET Framework type.

La sintassi degli operatori di tipo è la seguente:

        <input> <operator> [.NET type]

È anche possibile usare la sintassi seguente:

        <input> <operator> ".NET type"

Per specificare il tipo di .NET Framework, racchiudere il nome del tipo tra parentesi quadre ([ ]) oppure immettere il tipo come stringa, ad esempio, [DateTime] oppure "DateTime" per System.DateTime. Se il tipo non si trova nella radice dello spazio dei nomi del sistema, specificare il nome e cognome del tipo di oggetto. È possibile omettere "System". Per specificare, ad esempio, System.Diagnostics.Process, immettere [System.Diagnostics.Process], [Diagnostics.Process], oppure "diagnostics.process".

Gli operatori di tipo restituiscono sempre un valore booleano, anche se l'input è una raccolta di oggetti. Tuttavia, quando l'input è una raccolta, gli operatori di tipo corrispondono al tipo di .NET Framework della raccolta. Non corrispondono al tipo di ogni oggetto, anche quando tutti gli oggetti sono dello stesso tipo.

Per trovare il tipo di .NET Framework di un oggetto, usare il cmdlet Get-Member. In alternativa, usare il metodo GetType di tutti gli oggetti con la proprietà FullName di questo metodo. Ad esempio, l'istruzione seguente ottiene il tipo del valore restituito di un comando Get-Culture:Inserire qui il corpo del testo.

        C:\PS> (get-culture).gettype().fullname
        System.Globalization.CultureInfo

ESEMPI

Gli esempi seguenti mostrano alcuni usi degli operatori Type:

        C:\PS> 32 -is [Float]
        False

        C:\PS> 32 -is "int"
        True

        C:\PS> (get-date) -is [DateTime]
        True

        C:\PS> "12/31/2007" -is [DateTime]
        False

        C:\PS> "12/31/2007" -is [String]
        True

        C:\PS> (get-process PowerShell)[0] -is [System.Diagnostics.Process]
        True

        C:\PS> (get-command get-member) -is [System.Management.Automation.CmdletInfo]
        True

L'esempio seguente mostra queste informazioni quando l'input è una raccolta di oggetti, il tipo corrispondente è il tipo di .NET Framework della raccolta, non il tipo dei singoli oggetti della raccolta.

In questo esempio, nonostante i cmdlet Get-Culture e Get-UICulture restituiscono oggetti System.Globalization.CultureInfo, una raccolta di questi oggetti è una matrice System.Object.

        C:\PS> (get-culture) -is [System.Globalization.CultureInfo]
        True

        C:\PS> (get-uiculture) -is [System.Globalization.CultureInfo]
        True

        C:\PS> (get-culture), (get-uiculture) -is [System.Globalization.CultureInfo]
        False

        C:\PS> (get-culture), (get-uiculture) -is [Array]
        True
 
        C:\PS> (get-culture), (get-uiculture) | foreach {$_ -is [System.Globalization.CultureInfo])
        True
        True

        C:\PS> (get-culture), (get-uiculture) -is [Object]
        True

Gli esempi seguenti illustrano come usare l'operatore -as.

        C:\PS> "12/31/07" -is [DateTime]
        False

        C:\PS> "12/31/07" -as [DateTime]
        Monday, December 31, 2007 12:00:00 AM

        C:\PS> $date = "12/31/07" -as [DateTime]

        C:\PS>$a -is [DateTime]
        True

        C:\PS> 1031 -as [System.Globalization.CultureInfo]

        LCID             Name             DisplayName
        ----             ----             -----------
        1031             de-DE            German (Germany)

L'esempio seguente mostra queste informazioni quando l'operatore -as non riesce a convertire l'oggetto di input nel tipo di .NET Framework, non verrà restituito alcun oggetto.

        C:\PS> 1031 -as [System.Diagnostic.Process]
        C:\PS>

VEDERE ANCHE

about_Operators