1

我的场景如下所示:

Java 打开一个 Powershell,其中应以不同用户身份执行 Exchange Powershell 命令/脚本,并且输出应显示在 Java 打开的 Powershell 窗口中(以便 Java 可以读取输出)。所以:Normal Powershell --> Add Exchange functionality --> Execute Script/Command as different user

要将 Exchange 功能添加到普通 Powershell,我可以使用或者 add-pssnapin Microsoft.Exchange.Management.PowerShell.Admin像这样启动 PowershellC:\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 无法读取)并且不适合自动化
  • 我尝试了 2 种不同的方法来使用 Powershell:

方式一:

$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

一个简单的whoami工作方式是打印 $username 中指定的用户,但根据此链接,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.

这困扰了我近一个星期,所以我非常感谢任何帮助。

4

1 回答 1

0

我刚刚发现 Exchange 2007 ( http://howexchangeworks.com/2009/11/exchange-2007-sp2-supports-powershell.html ) 不支持执行远程 Powershell 命令/脚本。所以我需要等到升级到2013。

一些解决方法:http ://social.technet.microsoft.com/Forums/en-US/exchangesvrgeneral/thread/4596035a-cede-4541-8b8e-e2e9bf1b40dc

或: http: //peerfect.blogspot.co.at/2012/10/re-blog-of-my-exchange-remote.html

于 2013-06-11T13:30:14.340 回答