私のシナリオは次のようになります。
Java は、Exchange Powershell コマンド/スクリプトを別のユーザーとして実行する必要がある Powershell を開き、Java が開いた Powershell ウィンドウに出力を表示する必要があります (Java が出力を読み取れるようにするため)。そう:Normal Powershell --> Add Exchange functionality --> Execute Script/Command as different user
Exchange 機能を通常の Powershell に追加するには、次のいずれ
add-pssnapin Microsoft.Exchange.Management.PowerShell.Admin
かを使用するか、Powershell を次のように起動しますC:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -command ". 'PathToScript/script1.ps1'"
問題は、別のユーザーとしての実行です。
runAs
(またはPSEXECやminirunAsなどの他のツール)は、新しいウィンドウを開くため機能していないため、Javaによって開かれたPowerShellウィンドウに出力が表示されず(したがって、Javaで読み取ることができません)、自動化には適していません- Powershellでそれを行うために2つの異なる方法を試しました:
方法 1:
$username = 'domain\user'
$password = 'Pa$$w0rd'
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,(ConvertTo-SecureString -String $password -AsPlainText -Force))
Invoke-Command -Credential $cred -ComputerName localhost -FilePath PathToScript/script1.ps1
しかし、次のエラーが表示されます。
An Active Directory error 0x80072020 occurred while searching for domain controllers in domain MYDOMAIN: An operations error occurred.
+ CategoryInfo : NotSpecified: (0:Int32) [Get-MailboxStatistics], ADTransientException
$username で指定されたユーザーを出力する単純なwhoami
方法ですが、このリンクによると、これは Exchange コマンドでは不可能であるように見えます (ただし、ソースの信頼性はわかりません): http://thwack.solarwinds.com /スレッド/40524
方法 2 (ここで提案されているようにhttp://social.technet.microsoft.com/Forums/en-US/ITCG/thread/f805cbe0-bca9-401a-a381-a7f5520244d2 ):
$computerName = "localhost"
$username = 'domain\user'
$password = 'Pa$$w0rd'
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,(ConvertTo-SecureString -String $password -AsPlainText -Force))
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://$computerName/powershell -Credential $cred
Import-PSSession $session
しかし、ここでの問題は、URIhttp://$computerName/powershell
が存在しない (WinRM 502 例外が発生する) ことと、Exchange 2007 管理ツールだけがインストールされているサーバーで Powershell 仮想ディレクトリを取得する方法がわからないことです。
私の質問は次のとおりです。これを行う別の方法はありますか? 方法 1 と 2 で何が間違っていますか (方法 2 で Powershell VD を追加するにはどうすればよいですか)? それはまったく可能ですか?
Exchange 2007 管理ツールがインストールされた WinSrv2012 で Java (7 x64) を実行しています。Exchange Server はバージョン 2007 で実行されます。スクリプトはGet-MailboxStatistics -server ExSrv
.
これは 1 週間近く私を悩ませているので、助けていただければ幸いです。