1

Register-ScheduledJobを使用して、スクリプトを実行するバックグラウンドジョブでPowerShellにジョブを登録しています。このスクリプトには、Get-ProcessコマンドやWrite-Hostコマンドなどのコマンドが含まれています。と...

すべてのコマンドが結果で実行されますが、write-hostsからの出力は表示されません(get-Processは問題ありません)

多分誰かが理由を知っていますか?

4

2 に答える 2

1

Write-Host は、スクリプトが実行されているアプリ (たとえば PowerShell.exe) であるホストに書き込むため、画面に明示的に出力され、非対話型環境で実行している場合は何もしません。収集したいデータを出力するためにそれを使用しないでください。軽量のデバッグまたは対話型スクリプトで画面に出力する場合にのみ使用してください。

通常、出力として収集するデータには write-output を使用する必要があります。

デバッグ/警告/エラー出力を使用することもできますが (これらはジョブによって収集されますが、通常の出力には表示されません)。

于 2012-09-28T00:02:20.720 に答える
0

どうもありがとうございます。書き込み出力が役立ちました。

さらに、過去数日間に発見したことと、他の人に役立つ可能性があること: スケジュールされたバックグラウンド ジョブを開始し、このジョブで次のように powershell スクリプトを開始する場合:

Register-ScheduledJob -Name1 temp -ScheduledJobOption $option -ScriptBlock {
D:\scprit.ps1
}

終了後もスクリプト PowerShell ウィンドウがまだ開いているため、ジョブは終了しません。さらに、スクリプトブロックに exit を追加する必要があります。

Register-ScheduledJob -Name1 temp -ScheduledJobOption $option -ScriptBlock {
D:\scprit.ps1
Exit-PSSession
}
于 2012-09-28T21:25:46.803 に答える