Поделиться через


about_Type_Operators

Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0

РАЗДЕЛ

about_Type_Operators

КРАТКОЕ ОПИСАНИЕ

Этот раздел содержит описание операторов, работающих с типами Microsoft .NET Framework.

ПОДРОБНОЕ ОПИСАНИЕ

Операторы логического типа (-is и -isNot) сообщают, является ли объект экземпляром указанного типа .NET Framework. Оператор -is возвращает значение TRUE, если тип совпадает, и значение FALSE в противном случае. Оператор -isNot возвращает значение FALSE, если тип совпадает, и значение TRUE в противном случае.

Оператор -as пытается преобразовать входной объект в указанный тип .NET Framework. Если операция выполняется успешно, он возвращает преобразованный объект. Если возникает ошибка, он ничего не возвращает. Оператор не возвращает ошибку.

В следующей таблице перечислены операторы типов в 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.

Синтаксис операторов типа выглядит следующим образом:

        <input> <operator> [.NET type]

Кроме того, можно использовать следующий синтаксис:

        <input> <operator> ".NET type"

Чтобы указать тип .NET Framework, заключить имя типа в квадратные скобки ([ ]) или введите тип как строку, например [DateTime] или "DateTime" System.DateTime. Если тип не размещен в корневом пространстве имен системы, укажите полное имя типа объекта. "System" можно опустить. Например, чтобы указать System.Diagnostics.Process, введите [System.Diagnostics.Process], [Diagnostics.Process] или "diagnostics.process".

Операторы типа всегда возвращают логическое значение, даже если входные данные — это коллекция объектов. Но если входные данные — это коллекция, операторы типа соответствует типу .NET Framework коллекции. Они не совпадают с типом каждого объекта, даже если все объекты одного типа.

Чтобы найти имя типа .NET Framework объекта, используйте командлет Get-Member. Кроме того, можно использовать метод GetType всех объектов вместе со свойством FullName этого метода. Например, следующий оператор получает тип возвращаемого значения команды Get-Culture: вставьте здесь текст раздела.

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

ПРИМЕРЫ

Ниже показаны примеры использования оператора 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

В следующем примере показано, что если входные данные — это коллекция объектов, совпадающим типом будет тип .NET Framework коллекции, а не тип отдельных объектов в коллекции.

В этом примере (хотя командлеты Get-Culture и Get-UICulture возвращают объекты System.Globalization.CultureInfo) коллекция этих объектов — это массив 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

В следующих примерах показано использование оператора -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)

В следующем примере показано, что если оператор -as и не может преобразовать входной объект в тип .NET Framework, он ничего не возвращает.

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

СМ. ТАКЖЕ

about_Operators