РАЗДЕЛ 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