web-dev-qa-db-ja.com

スケジュールされたタスクでExchangePowerShellスクリプトを実行できません

PowerShellに直接入力すると機能するPowerShellスクリプトがあります。 PowerShellプログラムは、ショートカットを使用して実行されます。

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'"

Windowsタスクスケジューラで約10の異なる方法を試し、最初に上記のショートカットを開いてから、保存したスクリプトファイルを実行しましたが、機能しません。 'Running'でハングします。

スクリプトは次の場所にあります。

Z:\Exchange PowerShell\MailboxesApproachingOverQuota.ps1

スクリプトの内容をコピーして上記のPowerShellショートカットに貼り付けることができ、それは完全に正常に実行され、出力を電子メールで送信することに注意してください。

私が使用しているPowerShellインスタンスは、すでに引数が含まれている上記のショートカットからのものであることに注意してください。そのため、タスクスケジューラのどこに何を配置するかがわからなくなっています。

何か助けてください?

ありがとう:)


[〜#〜] edit [〜#〜]CMDで直接以下を使用する場合:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'; &'Z:\Exchange Powershell\MailboxesApproachingOverQuota.ps1'"

取得: http://tinypic.com/r/n1fkmg/8

私が以下を使用するとき:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'; &'Z:\Exchange Powershell\MailboxesApproachingOverQuota.ps1'"

私は得る: http://tinypic.com/r/5bbac9/8

これを実行する:

powershell -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -noexit -exec bypass -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'"

Exchange管理シェルを正常に開きます: http://tinypic.com/r/2dglulf/8

1
Logan

まず、タスクからスクリプトを実行する方法を説明します。

Program/script: 
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Add arguments (optional): 
-PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'; &'Z:\Exchange Powershell\MailboxesApproachingOverQuota.ps1'"

また、スクリプトの実行に使用しているユーザーIDには、ローカルサーバーでのアクセス許可を付与する必要がある場合があることにも注意してください。

更新:-noexitを削除しました

5
Adil Hindistan

このスクリプトは署名されていないと思います。 Set-ExecutionPolicy -ExecutionPolicy Unrestrictedコマンドレットを使用して、署名されていないスクリプトの実行を有効にしましたか?

5
Evan Anderson

単純なスクリプトファイルは、タスクスケジューラを介して機能します。 -Sendmail:$trueパラメーターを使用すると、これは機能します。 .batファイルを作成し、タスクスケジューラでPowershellスクリプトの代わりにそのファイルを実行しました。この.batファイルは私のExchange2016で動作しています。

PowerShell.exe -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; . C:\Script\Get-ExchangeEnvironmentReport.ps1 -HTMLReport C:\Script\Get-exchangeReport.html -SendMail:$true -MailFrom:[email protected] -MailTo:[email protected] -MailServer:mail.domain.com"
0
Muhammad Abid

私は同じ問題を抱えていて、それを回避する最も簡単な方法は、batファイルを介してコマンドを呼び出すことでした。コマンドラインからコマンド全体を実行することはできましたが、スケジュールされたタスクを使用しようとすると、何をしても機能しませんでした。

単一行のバッチファイルで修正されました。

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -version 2.0 -command ". 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; c:\psscripts\accessrights.ps1"

PSスクリプトにトランスクリプトを設定して、それが完了したかどうか、およびどのコマンドが実行されたかを確認できるようにしました。また、get-mailboxparmission -identity username:\ calendarを実行して、変更が反映されていることを確認しました。

乾杯

ピート

0
Peter Barras