답변:
아마도 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의 답변 에서와 같이 모든 리디렉션 옵션을 사용할 수 있습니다 .
*>&1 | Out-File $log -Encoding ascii -Append -Width 132
있지만 출력을 정확하게 제어 해야하는 경우 Powershell이 실제로 추악합니다.
cmdlet Tee-Object를 살펴볼 수 있습니다 . 출력을 Tee로 파이프 할 수 있으며 파이프 라인과 파일에도 쓰게됩니다.
모든 출력을 파일로 직접 리디렉션하려면 다음을 사용하십시오 *>>
.
# 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에서 테스트 중입니다.
이것을 스크립트에 포함시키기 위해 다음과 같이 할 수 있습니다 :
Write-Output $server.name | Out-File '(Your Path)\Servers.txt' -Append
그 트릭을해야합니다.