РАЗДЕЛ
    about_Type_Operators

КРАТКОЕ ОПИСАНИЕ
    Описывает операторы, работающие с типами Microsoft .NET Framework.

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

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


    В следующей таблице перечислены операторы типов в Windows PowerShell.


    Оператор  Описание                    Пример  
    --------  ------------------------    --------------
    -is       Возвращает TRUE, если на    C:\PS> (get-date) -is [datetime] 
	      вводе экземпляр указанного  True
	      типа .NET Framework.       

    -isnot    Возвращает TRUE, если на 	  C:\PS> (get-date) -isnot [datetime]
	      вводе не экземпляр 	  False
	      указанного типа 
	      .NET Framework.        
 
    -as       Преобразует объект ввода    C:\PS> 12/31/07 -as [datetime]
	      в указанный тип .NET        Monday, December 31, 2007 12:00:00 AM
    	      Framework.         
     

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

        <входные_данные> <оператор> [тип .NET]

    Можно использовать также следующий синтаксис:

        <входные_данные> <оператор> "тип .NET"
 

    Тип .NET Framework указывается следующим образом: заключите его 
    имя в квадратные скобки ([ ]) или введите тип как строку, 
    например [DateTime] или "datetime" для типа System.DateTime. Если 
    тип находится не в корневом пространстве имен системы, укажите 
    полное название типа объекта. Можно опустить "System.". Например, 
    чтобы указать System.Diagnostics.Process, введите [System.Diagnost
    ics.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




Содержание