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


Сведения об операторах типов

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

Описывает операторы, работающие с типами Microsoft платформа .NET Framework.

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

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

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

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

Оператор Описание Пример
-is Возвращает значение TRUE, если входные данные (get-date) -is [DateTime]
является экземпляром True
указанный тип .NET.
-isNot Возвращает значение TRUE, если входные данные (get-date) -isNot [DateTime]
не является экземпляром False
тип specified.NET.
-as Преобразует входные данные в "5/7/07" -as [DateTime]
указанный тип .NET. Monday, May 7, 2007 12:00:00 AM

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

<input> <operator> [.NET type]

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

<input> <operator> ".NET type"

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

Операторы логического типа (-is и -isNot) всегда возвращают логическое значение, даже если входные данные являются коллекцией объектов . Операторы типа всегда работают с входным объектом в целом. То есть, если входной объект является коллекцией, тестируется именно тип коллекции , а не типы элементов коллекции.

<Если входные данные> являются типом, производным от типа [тип.NET]-is, возвращается$True значение . <Если входные данные> являются типом, производным от передачи [тип.NET]-as, преобразует входные данные в целевой тип. Например, (Get-Item /) -is [System.IO.FileSystemInfo] возвращает $True, так как тип входных данных , [System.IO.DirectoryInfo]является производным[System.IO.FileSystemInfo]от .

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

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

Примеры

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

PS> 32 -is [Float]
False

PS> 32 -is "int"
True

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

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

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

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

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

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

В этом примере, хотя командлеты Get-Culture и Get-UICulture возвращают объекты System.Globalization.CultureInfo, коллекция этих объектов представляет собой массив System.Object.

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

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

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

PS> (get-culture), (get-uiculture) -is [Array]
True

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

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

В следующих примерах показано, как использовать оператор -as.

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

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

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

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

PS> 1031 -as [System.Globalization.CultureInfo]

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

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

PS> 1031 -as [System.Diagnostic.Process]
PS>

СМ. ТАКЖЕ

about_Operators