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
まず、タスクからスクリプトを実行する方法を説明します。
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を削除しました
このスクリプトは署名されていないと思います。 Set-ExecutionPolicy -ExecutionPolicy Unrestricted
コマンドレットを使用して、署名されていないスクリプトの実行を有効にしましたか?
単純なスクリプトファイルは、タスクスケジューラを介して機能します。 -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"
私は同じ問題を抱えていて、それを回避する最も簡単な方法は、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を実行して、変更が反映されていることを確認しました。
乾杯
ピート