web-dev-qa-db-ja.com

スケジュールされたタスクのExchange PowerShellが永久に実行される

スケジュールされたタスクとして実行したいExchange 2010 PowerShellスクリプトがいくつかあります。

「別のユーザーとして実行」を使用してPowerShellを起動すると、スクリプトを実行でき、スクリプトは正しく実行されます。

同じユーザーを使用してタスクをスケジュールすると、タスクは永久に実行状態のままになります。

タスクが行き詰まっている場所を知るにはどうすればよいですか?

参考までに、Exchangeを有効にする方法は次のとおりです。

. 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'
Connect-ExchangeServer -auto

そして、これが私がタスクスケジューラからスクリプトを実行しようとした方法です。

  • powershell -command "&{。 'c:\ windows\script.ps1'}"
  • powershell-ファイル 'c:\ windows\script.ps1'
  • powershell -file "c:\ windows\script.ps1"

すべて同じ結果になります。 Grr ...

8
longneck

実行ポリシーを変更するか、-ExecutionPolicy Bypassコマンドラインパラメータとして。

powershell -Command "<path to .ps1 script>" -ExecutionPolicy Bypass
3
TheCompWiz

これがどのように行われているかはわかりませんが、タスクスケジューラ経由でPowerShellスクリプトを実行しているときは、「プログラムの開始」アクションを使用してpowershellを選択し、そこから引数を追加します。それはあなたがここでしていることかもしれませんが、それはちょっと不明確です。これがスクリーンショットです: enter image description here

CompWizごとの実行ポリシーも問題になる可能性があります。

2
ZnewmaN

私も同じ問題を抱えていました。私の場合、解決策は "start in"ディレクトリを指定することでした(私のスクリプトは、ファイルへの完全パスを指定しなかったために見つからないファイルの内容を読み取ります)。

0
Azimuth

私も同じ問題を抱えており、taskkillコマンドを使用するための「user279399」によるコメントは非常に役に立ちました。これが引数構文の最後の私の解決策です

taskkill /f /fi "USERNAME eq domain\exchadmin" /im powershell.exe

このコマンドは、そのユーザーアカウントで実行されているPowerShellセッションのみを強制終了します。スケジュールされたタスクを実行するには、別のExchange管理アカウントを用意することをお勧めします。

0
Leon B