IDE를 사용할 때 Powershell에서 타사 실행 파일을 호출 할 때 오류 발생
du.exe ( 원래 Sysinternals의 디스크 사용량 )를 사용하여 디렉터리 크기를 계산 하는 PowerShell 스크립트가 있습니다.
du c:\Backup
콘솔에서 실행하면 예상대로 작동하지만 ISE 또는 PowerGui에서 실행되는 동일한 코드 줄이 예상 결과와 오류를 제공합니다.
+ du <<<< c:\backup
+ CategoryInfo : NotSpecified: (:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
왜 그런 겁니까? 이 오류를 어떻게 피합니까? 을 사용하여 invoke-expression을 시도 &
했지만 이동하지 않았습니다.
도와 주셔서 감사합니다.
이를 방지하려면 stderr을 null로 리디렉션 할 수 있습니다. 예 :
du 2> $null
기본적으로 콘솔 호스트와 ISE (및 원격)는 stderr 스트림을 다르게 처리합니다. 콘솔 호스트에서 PowerShell이 edit.com과 같은 애플리케이션을 지원하여 컬러 출력 및 오류를 화면에 기록하는 다른 애플리케이션과 함께 작동하는 것이 중요했습니다. I / O 스트림이 콘솔 호스트에서 리디렉션되지 않으면 PowerShell은 네이티브 EXE에 직접 쓸 콘솔 핸들을 제공합니다. 이것은 PowerShell을 우회하므로 PowerShell은 작성된 오류가 있음을 알 수 없으므로 $ error를 통해 또는 PowerShell의 stderr 스트림에 기록하여 오류를보고 할 수 없습니다.
ISE 및 원격 기능은이 시나리오를 지원할 필요가 없으므로 stderr에서 오류를 확인하고 이후에 오류를 작성하고 $ error를 업데이트합니다.
최근에 동일한 문제에 직면했지만 stderr 출력을 stdout으로 보내고 싶습니다. 다음이 작동한다고 생각할 것입니다.
& du 2>&1
그러나 PowerShell은 리디렉션을 해석하고 'du'가 완료된 후 처리합니다. 내가 찾은 해결 방법은 cmd.exe / c를 사용하여 호출하는 것입니다.
& cmd /c 'du 2>&1'
NativeCommandError
출력 을 억제하는 또 다른 방법 은 파이프 라인 의 객체 를 이 답변 의 맨 아래에 설명 된대로 문자열 로 변환하는 것입니다 .
du c:\Backup 2>&1 | %{ "$_" }
시험:
du 2>&1 | %{ "$_" }
이전 FIX는 오류를 리디렉션하지만 예를 들어 사용자 이름 또는 암호가 좋지 않거나 통합 인증을 사용하는 경우 액세스 권한이없는 경우 실제 오류를 잃을 수 있습니다.
따라서 여기에 오류 처리를 구현하고 psexec에 의해 발생한 특정 오류 (즉, 오류가 아님)를 우회하는 방법이 있습니다.
try{
psexec command .....
}
catch [System.Management.Automation.RemoteException]{
if ($_.TargetObject -like "Connecting to *" -and $_.CategoryInfo.Category -eq "NotSpecified" -and $_.FullyQualifiedErrorId -eq "NativeCommandError" -and $_.InvocationInfo.MyCommand.Name -like "psexec*.exe"){
$error.Remove[$Error[0]]
}
else{
Throw
}
}
catch{
throw
}
'Nice programing' 카테고리의 다른 글
Kotlin에서 익명 인터페이스의 인스턴스를 만드는 방법은 무엇입니까? (0) | 2020.11.24 |
---|---|
WebKit / Safari 용 콘솔 API는 어디에 있습니까? (0) | 2020.11.24 |
Symfony 2 WebTestCase에서 테스트 데이터베이스를 만들고 픽스쳐를로드하는 가장 좋은 방법은 무엇입니까? (0) | 2020.11.24 |
ExpressJS의 req.query 및 req.param (0) | 2020.11.24 |
Amazon Lambda에서 moviepy, scipy 및 numpy 사용 (0) | 2020.11.24 |