web-dev-qa-db-ja.com

タスクスケジューラ-複数のパラメータを使用してPowerShellスクリプトを実行する方法は?

プログラムとしてpowershell.exeを使用しており、「-Command "& C:\Windows\logon.ps1; exit $LASTEXITCODE"; ExecutionPolicy RemoteSigned "をパラメータとして使用していますが、機能していないようです。

私が欲しいいくつかのこと:

  1. タスクスケジューラで結果を取得するので、すべてが正常に機能したかどうか、またはエラーが発生したかどうかを知ることができます

  2. スクリプトの出力をoutput.txtファイルに取得します(増分ファイルは可能ですか?)

  3. 非表示のスクリプトを実行する

5
FernandoSBS

あなたがあなたの質問で-を忘れたかどうかはわかりませんが、それは-ExecutionPolicyです。そのスクリプトが署名されていない場合、そのスクリプトも実行されません。実行ポリシーとしてbypassを使用して、それを除外できます。

コマンドラインでスクリプトやコマンドを次々に実行できるとは思えません。スクリプトにexit $LASTEXITCODEを追加し、-File C:\script.ps1で実行します。

run hiddenでコンソールウィンドウがないことを意味する場合、私は通常、スクリプトを次のように呼び出します。

powershell.exe -noprofile -executionpolicy bypass -file C:\script.ps1

窓は決して見えません。

スクリプトの出力をファイルに取り込むには、コマンドをTee-Objectにパイプします。

"Hello World" | Tee-Object C:\output.file

ファイルに任意の名前を付けたり、スクリプトにロジックを実装してファイル名をインクリメントしたり、(私の個人的なお気に入り)ファイル名にYYYYMMddhhmmssを使用したりできます。


更新

また、Powershellの MicrosoftのTechnetページ から取得:

スクリプトブロックは中括弧({})で囲む必要があります。 WindowsPowerShellでPowerShell.exeを実行している場合にのみスクリプトブロックを指定する。スクリプトの結果は、ライブオブジェクトではなく、逆シリアル化されたXMLオブジェクトとして親シェルに返されます。

Commandの値が文字列の場合、コマンドの後に入力された文字はすべてコマンド引数として解釈されるため、コマンドはコマンドの最後のパラメーターである必要があります

2
MDMoore313