출력을 파일로 리디렉션하려는 PowerShell 스크립트가 있습니다. 문제는이 스크립트가 호출되는 방식을 변경할 수 없다는 것입니다. 그래서 나는 할 수 없습니다 :
.\MyScript.ps1 > output.txt
PowerShell 스크립트가 실행되는 동안 출력을 어떻게 리디렉션합니까?
답변
아마도 Start-Transcript
당신을 위해 일할 것입니다. 이미 실행 중이면 중지 한 다음 시작하고 완료되면 중지하십시오.
$ ErrorActionPreference = "SilentlyContinue" 정지 대본 | 널이 아닌 $ ErrorActionPreference = "계속" 시작 스크립트-경로 C : \ output.txt-추가 # 몇 가지 일을 정지 대본
또한 작업하는 동안 이것을 실행하고 나중에 참조 할 수 있도록 명령 행 세션을 저장하도록 할 수 있습니다.
복사하지 않은 대화 내용을 중지하려고 할 때 오류를 완전히 억제하려면 다음을 수행하십시오.
$ErrorActionPreference="SilentlyContinue"
Stop-Transcript | out-null
$ErrorActionPreference = "Continue" # or "Stop"
답변
Microsoft는 Powershell의 Connections 웹 사이트 (2012-02-15 (4:40 PM)) 에서 버전 3.0에서이 문제에 대한 솔루션으로 리디렉션을 확장 했다고 발표했습니다 .
In PowerShell 3.0, we've extended output redirection to include the following streams:
Pipeline (1)
Error (2)
Warning (3)
Verbose (4)
Debug (5)
All (*)
We still use the same operators
> Redirect to a file and replace contents
>> Redirect to a file and append to existing content
>&1 Merge with pipeline output
자세한 내용과 예는 “about_Redirection”도움말을 참조하십시오.
help about_Redirection
답변
사용하다:
Write "Stuff to write" | Out-File Outputfile.txt -Append
답변
나는 당신이 수정할 수 있다고 생각합니다 MyScript.ps1
. 그런 다음 다음과 같이 변경하십시오.
$(
Here is your current script
) *>&1 > output.txt
방금 PowerShell 3으로 이것을 시도했습니다 . Nathan Hartley의 답변 에서와 같이 모든 리디렉션 옵션을 사용할 수 있습니다 .
답변
상황에 따라 허용되는 한 가지 해결책 :
- MyScript.ps1의 이름을 TheRealMyScript.ps1로 바꿉니다.
-
다음과 같은 새 MyScript.ps1을 만듭니다.
. \ TheRealMyScript.ps1> output.txt
답변
powershell ".\MyScript.ps1" > test.log