Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Назначение: 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