回答:
多分Start-Transcript
あなたのために働くでしょう。すでに実行されている場合は、最初に停止してから開始し、完了したら停止します。
$ ErrorActionPreference = "SilentlyContinue" ストップトランスクリプト| アウトヌル $ ErrorActionPreference = "続行" Start-Transcript -path C:\ output.txt -append #何かをする ストップトランスクリプト
作業中にこれを実行して、後で参照できるようにコマンドラインセッションを保存することもできます。
文字起こししていない筆記録を停止しようとしたときにエラーを完全に抑制したい場合は、次のようにします。
$ErrorActionPreference="SilentlyContinue"
Stop-Transcript | out-null
$ErrorActionPreference = "Continue" # or "Stop"
Microsoftは、PowershellのConnections Webサイト(2012-02-15 at 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で試しました。NathanHartley の回答のように、すべてのリダイレクトオプションを使用できます。
*>&1 | Out-File $log -Encoding ascii -Append -Width 132
しかし、あなたが出力を正確に制御する必要があるならば、Powershellは本当に醜いです。
コマンドレット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
これでうまくいくはずです。