실행 중 PowerShell 출력을 파일로 리디렉션하는 방법
출력을 파일로 리디렉션하는 PowerShell 스크립트가 있습니다.문제는 이 스크립트의 호출 방식을 변경할 수 없다는 것입니다.그래서 할 수 없다:
.\MyScript.ps1 > output.txt
PowerShell 스크립트 실행 중 출력을 리디렉션하려면 어떻게 해야 합니까?
아마도요.Start-Transcript
너한테 좋을 거야.이미 실행 중인 경우 먼저 중지하고, 다시 시작하고, 완료되면 중지합니다.
$ErrorActionPreference="사일런트 계속"Stop-Transcript | out-null$ErrorActionPreference = "계속"Start-Transcript 경로 C:\output.txt - 명령어# 몇 가지 일을 하다정지 문자
작업 중에 이 기능을 실행하거나 나중에 참조할 수 있도록 명령줄 세션을 저장할 수도 있습니다.
변환되지 않은 트랜스크립트를 정지하려고 할 때 오류를 완전히 억제하려면 다음 작업을 수행합니다.
$ErrorActionPreference="SilentlyContinue"
Stop-Transcript | out-null
$ErrorActionPreference = "Continue" # or "Stop"
Microsoft는 Powershell의 Connections 웹 사이트(2012-02-15 오후 4시 40분)에서 이 문제에 대한 해결책으로 버전 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의 답변과 같이 모든 리디렉션 옵션을 사용할 수 있습니다.
powershell ".\MyScript.ps1" > test.log
모든 출력을 파일로 직접 리디렉션하려면*>>
:
# You'll receive standard output for the first command, and an error from the second command.
mkdir c:\temp -force *>> c:\my.log ;
mkdir c:\temp *>> c:\my.log ;
이 파일은 파일로 직접 리디렉션되므로 콘솔에 출력되지 않습니다(대부분 도움이 됩니다).콘솔 출력을 원하는 경우, 모든 출력을*&>1
, 그리고 파이프로 연결합니다.Tee-Object
:
mkdir c:\temp -force *>&1 | Tee-Object -Append -FilePath c:\my.log ;
mkdir c:\temp *>&1 | Tee-Object -Append -FilePath c:\my.log ;
# Shorter aliased version
mkdir c:\temp *>&1 | tee -Append c:\my.log ;
이러한 기술은 PowerShell 3.0 이상에서 지원되는 것으로 알고 있습니다. PowerShell 5.0에서 테스트 중입니다.
상황이 허락하는 한 가지 가능한 해결책:
- MyScript.ps1의 이름을 TheRealMyScript.ps1로 변경합니다.
다음과 같은 새로운 MyScript.ps1을 만듭니다.
.\RealMyScript.ps1 > 출력.txt
cmdlet Tee-Object를 살펴보는 것이 좋습니다.출력을 Tee에 파이프로 연결하여 파이프라인과 파일에 쓸 수 있습니다.
스크립트 자체에 짜넣지 않고 명령줄에서 실행할 경우 다음 명령을 사용합니다.
.\myscript.ps1 | Out-File c:\output.csv
이것을 스크립트에 짜넣으려면 , 다음과 같이 실시합니다.
Write-Output $server.name | Out-File '(Your Path)\Servers.txt' -Append
그것이 효과가 있어야 해요.
언급URL : https://stackoverflow.com/questions/1215260/how-to-redirect-the-output-of-a-powershell-to-a-file-during-its-execution
'programing' 카테고리의 다른 글
Xcode 10에서 명령 CompileSwift가 0이 아닌 종료 코드로 실패했습니다. (0) | 2023.04.26 |
---|---|
iOS: 배경이 투명한 모달 뷰 컨트롤러 (0) | 2023.04.26 |
Swift's Codable을 사용하여 사전에 인코딩하려면 어떻게 해야 합니까? (0) | 2023.04.21 |
C++ 문자열에서 마지막 문자 제거 (0) | 2023.04.21 |
목록을 목록으로 변환 (0) | 2023.04.21 |