Recebi a tarefa de criar um script que será executado em várias máquinas de usuários em toda a rede. Os comandos que vamos executar irão mudar o alias de email do usuário para algo baseado em uma escolha. Isso, eu não tenho problema com isso. Meu problema é o fato de que o usuário precisa acessar os comandos do Exchange e uma conta com os direitos para usá-lo.
Eu assegurei uma senha de conta de serviço em um XML com o seguinte comando no servidor em que eu queria que as credenciais residissem:
$MyCredentials=Get-Credentials -Credential "domain\username" | Export-CliXml C:\Scripts\SecureCredentials.xml
Em seguida, no script, importei essa informação com o seguinte:
$cred=Import-CLIXML \server\Scripts\SecureCredentials.xml
Essa parte está funcionando bem, até onde eu sei.
Eu, então, estou tentando importar o módulo do Microsoft Exchange 2010 para executar os comandos que mencionei anteriormente. Eu escrevi essa pequena porção e estou recebendo erros estranhos. Aqui está o que eu codifiquei:
$Session = New-PSsession -ComputerName exchangeserver
Invoke-Command -Command {Import-Module Microsoft.Exchange.Management.PowerShell.2010} -Session $Session
Import-PSSession -Session $Session -Module Microsoft.Exchange.Management.Powershell.2010 -Prefix RM
Eu tento testar essa parte e recebo uma mensagem de erro do WinRM, mas, até onde eu sei, o WinRM está funcionando bem no meu servidor Exchange. Aqui está o erro:
New-PSsession : [exchangeserver] Connecting to remote server exchangeserver failed with the following error message : The client
cannot connect to the destination specified in the request. Verify that the service on the destination is running and
is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination,
most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to
analyze and configure the WinRM service: "winrm quickconfig". For more information, see the
about_Remote_Troubleshooting Help topic.
At C:\users\me\documents\Powershell Scripts\ExchangeBranding.ps1:17 char:14
+ $Session = New-PSsession -ComputerName exchangeserver
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotin
gTransportException
+ FullyQualifiedErrorId : CannotConnect,PSSessionOpenFailed
Invoke-Command : Cannot validate argument on parameter 'Session'. The argument is null or empty. Provide an argument
that is not null or empty, and then try the command again.
At C:\users\me\documents\Powershell Scripts\ExchangeBranding.ps1:18 char:98
+ ... 2010} -Session $Session
+ ~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Invoke-Command], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.InvokeCommandCommand
Import-PSSession : Cannot validate argument on parameter 'Session'. The argument is null. Provide a valid value for
the argument, and then try running the command again.
At C:\users\me\documents\Powershell Scripts\ExchangeBranding.ps1:19 char:29
+ Import-PSSession -Session $Session -Module Microsoft.Exchange.Management.Power ...
+ ~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Import-PSSession], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.ImportPSSessionCommand
Preciso do nome totalmente qualificado do servidor quando o clico para importá-lo? Eu estava tentando acompanhar em um artigo do TechNet e isso me levou até aqui, mas não consigo importar o módulo.
EDIT: agora posso importar o módulo, mas estou com problemas para anexar as credenciais. Se eu fizer isso sem incorporar as credenciais e apenas importá-las manualmente, posso fazer com que o módulo seja importado com o seguinte:
$session=New-PSSession -ConfigurationName Microsoft.Exchange.Management.Powershell.2010 -ConnectionUri http://exchangeserver.domain.com/powershell