2013-04-23 3 views
3

PowerShell (v3이 설치됨)에서 이상한 동작을 관찰 할 때 간단한 데모 스크립트를 작성했습니다.Powershell : 이상한 행동을 일으키는 GetType

$file = ls 'C:\temp' | Where-Object {$_.Extension -eq '.txt'} 
$file.FullName 

#$file.GetType() 

dir 'c:\temp' 

꽤 괜찮은가요? 예상대로 실행됩니다 (txt 파일이있는 c : \ temp 디렉토리가 있다고 가정). 그러나 $ file.GetType() 줄의 주석 처리를 제거하면 뒤 따르는 dir 줄은 더 이상 간단한 디렉터리 목록을 제공하지 않습니다. 대신 디렉토리의 모든 항목에 대한 자세한 목록을 제공합니다. GetType을 out-null로 파이핑 (piping)하려고 시도했지만 dir이 잘 작동하지만 GetType 및 디렉토리를 나중에 나열 할 수있는 것 같지 않습니다.

그래서 GetType을 호출하면 스트림 아래 다른 cmdlet에서 변경이 발생했는지 궁금합니다. 누군가 그것을 일으키는 메커니즘을 설명 할 수 있습니까?

또한 몇 가지 다른 방법을 시도해 보았는데 몇 가지 원인 (예 : GetAccessControl)과 다른 원인 (예 : GetHashCode)을 발견했습니다. 따라서 메서드를 호출하는 것만이 아니라 특정 메서드가 동작을 유발합니다.

+0

[여기를 클릭하십시오.] (http://connect.microsoft.com/PowerShell) –

답변

3

기본 포맷터가 혼란스러워지고 형식 테이블 대신 형식 목록 표시로 전환되는 것처럼 보입니다.

GetType()을 주석 처리하지 않은 다음 명시 적으로 디렉터리 목록을 FT로 파이프하면 정상으로 돌아갑니다.

+2

감사합니다. 실제로 작동합니다. 나는 기본 서식을 인식하지 못했습니다. 나중에 다른 사람이 심층적 인 다이빙을 원한다면이 기사를 찾았습니다. http://blogs.msdn.com/b/powershell/archive/2006/04/30/586973.aspx –

관련 문제