問題が実行ポリシーにある場合は、PowerShellの特定の呼び出しの実行ポリシーを設定することもできます。これは、スケジュールされたタスクを介してPowerShellを実行するときに私が通常行うことです。
powershell.exe -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File \\path\to\script.ps1
なんで?
-NoProfile
これにより、ユーザーのPowerShellプロファイルに依存しないようになり、追加のコードを実行するオーバーヘッドが回避されます。
-NoLogo
これはほとんど問題ではありません。スクリプトの出力をキャプチャしている場合は、おそらくそうなります。ほとんどの場合、気分が良くなります。
-非対話型
スクリプト内の何かが予期せずユーザーにプロンプトを表示した場合に、タスクが無期限に待機しないようにします。このスイッチを使用すると、スクリプトは代わりに終了します。少なくとも、ぶら下がっているスクリプトの代わりにエラーコードが表示されます。
-ExecutionPolicyバイパス
Unrestricted
ここまたは任意の実行ポリシーを使用できます。これはおそらくあなたが最も必要とするものです。
この方法で実行ポリシーを設定することを好む理由:
タスクがデフォルト以外のグローバル設定に依存することを望まないため、将来変更する他の理由がある可能性があります。他のプロセスが別の実行ポリシーに依存している場合、この方法でタスクと競合することはありません。
さらに、デフォルトを変更する必要がないのは常に素晴らしいことです。覚えにくい/文書化/テストする。
ボーナス
0x1
スケジュールされたタスクの結果のいくつかの追加の原因については、JohnLBevanの回答を参照してください。