about_Type_Operators
업데이트 날짜: 2014년 5월
적용 대상: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.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] 또는 System.DateTime의 경우 "DateTime" 같은 문자열로 입력합니다. 형식이 시스템 네임스페이스의 루트에 있지 않으면 개체 형식의 전체 이름을 지정합니다. "System."은 생락할 수 있습니다. 예를 들어 System.Diagnostics.Process를 지정하려면 [System.Diagnostics.Process], [Diagnostics.Process] 또는 "diagnostics.process"를 입력합니다.
형식 연산자는 입력이 개체 컬렉션이더라도 언제나 부울 값을 반환합니다. 그러나 입력이 컬렉션이면 형식 연산자가 컬렉션의 .NET Framework 형식을 일치시킵니다. 모든 개체가 같은 형식이더라도 각 개체의 형식을 일치시키지는 않습니다.
개체의 .NET Framework 형식을 찾으려면 Get-Member cmdlet을 사용합니다. 또는 모든 개체의 GetType 메서드를 이 메서드의 FullName 속성과 함께 사용합니다. 예를 들어 다음 문은 여기서 Get-Culture command:Insert 섹션 본문의 반환 값의 형식을 가져옵니다.
C:\PS> (get-culture).gettype().fullname
System.Globalization.CultureInfo
예제
다음 예제에서는 형식 연산자의 몇 가지 사용 방법을 보여 줍니다.
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 cmdlet이 모두 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