2011-02-18 4 views
2

나는, 원격 폴더의 크기를 캡처하는 PowerShell 스크립트에서 다음과 같이 코드 DU.exe을 사용하고 있습니다 :에 의해 발생하는 오류를 중지 stderror을 리디렉션 내가 가진파워 쉘 Du.exe 오류

$Duexe ="c:\du\du.exe" 

$unc = "\\$server\$Letter$\$Name" 

write-host "Processing: " $unc 

$stuff = du -q "\\$server\$Letter$\$Name" 2>&1 

$formated = $stuff | Format-Table -auto 

write-host $stuff 

을 "-q"스위치. 그러나 오류가 발생한 출력 컨티넨스는 다음과 같습니다.

System.Management.Automation.RemoteException 

In context: 

Files:  290215 Directories: 2246 Size:   128,529,542,967 bytes Size on disk: 128,529,542,967 bytes System.Management.Automation.RemoteException 

왜 그렇습니까? 외부 파워 쉘에서 du를 실행하면 동일한 unc 경로에서 오류가 발생하지 않습니다.

+0

stderror가 트렁크 방향을 바꾼다면 messgae가 표시되는 것을 알 수 있습니다. – Daniel

답변

2

변수 $stuff에서 캡처 한 출력 스트림에 오류를 "리디렉션"하므로 오류가 많이 중단되지 않았습니다. 그것을 무시 $null에 바로 오류 스트림을 리디렉션하십시오 :

$stuff = du -q "\\$server\$Letter$\$Name" 2> $null 

$stuff | Format-Table -auto 

BTW, 당신은 "포맷"물건을 호스트를 작성할 필요가 없습니다. Format-Table은 호스트에 자동으로 출력됩니다.

1

배치 스타일이 > 인 Powershell에서 출력을 리디렉션하지 않습니다. $stuff = du -q $unc을 사용하여 du 출력을 변수로 가져 오면됩니다.

그런데 $stuff을 인쇄하지만 서식이 지정된 콘텐츠는 $formated으로 설정합니다. 이것은 의도 된 것입니까?

관련 문제