2015-05-27 49 views
3

我正尝试从Ruby脚本为Active Directory中的现有用户运行启用邮箱命令。我正在使用this winrm gem。到目前为止,我已经能够使用winrm和kerberos认证连接到交换服务器。我可以从powershell运行Exchange管理shell。从那里我可以执行交换命令。使用Ruby/WinRM从Linux运行Exchange Powershell命令

然而,当我尝试运行启用邮箱我得到以下错误:“操作失败的”

Active Directory operation failed on . The supplied credential for 'domain\account' is invalid.

的是逐字的。在你认为应该存在的空间中没有文字。域\帐户是我用来通过Kerberos成功连接到winrm的域。

这里是我的简单的代码:

endpoint = 'http://server:5985/wsman' 
krb5_realm = 'myrealm' 
winrm = WinRM::WinRMWebService.new(endpoint, :kerberos, :realm => krb5_realm) 

#exch_cmd = "Get-Help Enable-Mailbox" NOTE THAT THIS COMMAND WORKS FINE 
exch_cmd = "Enable-Mailbox -Identity:'user DN' -Alias:'username' -Database:'mailbox'" 
command = "powershell -psconsolefile \"C:\\Program Files\\Microsoft\\Exchange Server\\V15\\bin\\exshell.psc1\" -command \". "+exch_cmd+"\"" 

winrm.cmd(command) do |stdout, stderr| 
    STDOUT.print stdout 
    STDERR.print stderr 
end 

感谢您的帮助!

回答

2

我们设法让它工作。我必须先连接到“管理”服务器才能启动powershell命令。

endpoint = 'http://YOURSERVER:5985/wsman' krb5_realm = 'YOURREALM' winrm = WinRM::WinRMWebService.new(endpoint, :kerberos, :realm => krb5_realm)

然后我不得不修改交换命令到这一点:

exch_cmd = "Enable-Mailbox -Identity:'DOMAIN/OU/#{fullname}' -Alias:'#{username}' -Database:'#{MailboxDB}'"

command = "powershell -NonInteractive -WindowStyle Hidden -command \" $username = '#{account}'; $password = ConvertTo-SecureString '#{password}' -asplaintext -force; $UserCredential = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $username,$password; $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri #{server} -Authentication Kerberos -Credential $UserCredential; Invoke-Command -Session $Session {#{exch_cmd}}\""

在管理和Exchange服务器,服务帐户需要在远程管理集团。您还需要根据本指南更新SDDL:http://www.sevecek.com/Lists/Posts/Post.aspx?ID=280根据您的服务器配置,这将会有所不同。

+0

我试图使用winrm python获得交换服务器。你能帮忙吗? – KMG