我的场景如下所示:
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
.
这困扰了我近一个星期,所以我非常感谢任何帮助。