텍스트 파일 및 콘솔에 오류 및 출력 쓰기
실행 스크립트의 전체 출력(오류 포함)을 콘솔과 파일에 동시에 작성하려고 합니다.몇 가지 다양한 옵션을 시도해 보았습니다.
.\MyScript.ps1 | tee -filePath C:\results.txt # only the output to the file
.\MyScript.ps1 2> C:\results.txt # only the errors to the file and not the console
.\MyScript.ps1 > C:\results.txt # only the output to the file and not the console
저의 희망은 파일을 사용하여 출력/오류를 검토하는 것이었습니다.
편집:
이것이 제 현재 시험 대본입니다.원하는 결과는 세 개의 메시지를 모두 볼 수 있다는 것입니다.
function Test-Error
{
echo "echo"
Write-Warning "warning"
Write-Error "error"
}
Test-Error 2>&1 | tee -filePath c:\results.txt
시도해 보셨습니까?
.\MyScript.ps1 2>&1 | tee -filePath c:\results.txt
2>&1
당신이 찾고 있는 건
참고: 이 답변은 PowerShell 1.0 및 2.0에서는 잘 작동하지만, PowerShell 3.0 이상에서는 표준 출력과 오류만 파악합니다.
어떤 답변도 만족스럽지 못해서 몇 가지를 섞어서 생각해냈습니다(PowerShell 3.0+).
$output = try{your_command *>&1}catch{$_}
이를 통해 사용을 시도하여 발생하는 모든 오류 및 출력을 캡처할 수 있습니다.your_command
.
존재하지 않는 명령을 사용할 때는 예외를 잡습니다.
PS C:\Users\jdgregson> $output = try{your_command *>&1}catch{$_}
PS C:\Users\jdgregson> echo $output
your_command : The term 'your_command' is not recognized as the name of a
cmdlet, function, script file, or operable program. Check the spelling of the
name, or if a path was included, verify that the path is correct and try again.
At line:1 char:15
+ $output = try{your_command 2>&1}catch{$_}
+ ~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (your_command:String) [], Comman
dNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
PS C:\Users\jdgregson>
잘못된 인수를 기존 명령에 전달할 때 예외를 잡습니다.
PS C:\Users\jdgregson> $output = try{cat C:\invalid-path.txt *>&1}catch{$_}
PS C:\Users\jdgregson> echo $output
cat : Cannot find path 'C:\invalid-path.txt' because it does not exist.
At line:1 char:15
+ $output = try{cat C:\invalid-path.txt 2>&1}catch{$_}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\invalid-path.txt:String) [Ge
t-Content], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetCo
ntentCommand
명령에 전혀 문제가 없는 경우 출력이 잡힙니다.
PS C:\Users\jdgregson> $output = try{cat C:\valid-path.txt *>&1}catch{$_}
PS C:\Users\jdgregson> echo $output
this file is really here
예를 들어, 다음과 같이 사용할 수 있습니다.
PS C:\Users\jdgregson> $output = try{Test-Error *>&1}catch{$_}
PS C:\Users\jdgregson> echo $output
echo
WARNING: warning
Test-Error : error
At line:1 char:15
+ $output = try{Test-Error *>&1}catch{$_}
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorExcep
tion
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorExceptio
n,Test-Error
기본적으로 데이터의 성공 스트림만 출력 파일로 전달됩니다.오류 및 경고를 지시하려면 다음과 같은 내용을 추가해야 합니다.
당신의 스크립트 3>&12>&1 | Out-file log.txt
저는 같은 파일에서 오류와 결과를 둘 다 얻을 수 없었습니다.내게 도움이 된 해결책:
.\MyScript.ps1 2> C:\errors.txt | tee -filePath C:\results.txt
업데이트: 작업을 더 진행했고 사용했습니다.Start-Transcript
그리고.Stop-Transcript
내 모드에서 모든 것을 포착할 수 있었고 효과가 있었습니다!
언급URL : https://stackoverflow.com/questions/3008545/writing-errors-and-output-to-a-text-file-and-console
'programing' 카테고리의 다른 글
utf8_unicode_ci와 utf8mb4_0900_ai_ci의 차이점은 무엇입니까? (0) | 2023.09.13 |
---|---|
문자열을 C#의 DateTime에 구문 분석 (0) | 2023.09.13 |
Jquery: 요소에 특정 CSS 클래스/스타일이 있는지 확인하는 방법 (0) | 2023.09.13 |
Spring HATEOAS 내장 리소스 지원 (0) | 2023.09.13 |
Context.startForegroundService()가 Service.startForeground()를 호출하지 않았습니다. (0) | 2023.09.13 |