Mon scénario ressemble à ceci:de script Powershell exécution comme différent utilisateur dans Exchange 2007 Powershell
Java ouvre un Powershell dans lequel Exchange Powershell commande/scripts doivent être exécutés en tant qu'utilisateur différent et la sortie doivent être affichées dans le Powershell Windows que Java a ouvert (Java peut donc lire la sortie). donc: Normal Powershell --> Add Exchange functionality --> Execute Script/Command as different user
Pour ajouter des fonctionnalités Exchange au Powershell normale j'utilise soit add-pssnapin Microsoft.Exchange.Management.PowerShell.Admin
ou commencer Powershell comme celui-ci C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -command ". 'PathToScript/script1.ps1'"
Le problème est l'exécution en tant qu'utilisateur différent:
runAs
(ou d'autres outils comme PSEXEC ou minirunAs) ne fonctionne pas car il ouvre une nouvelle fenêtre pour que la sortie n'apparaisse pas dans la fenêtre powershell ouverte par Java (donc ne peut pas être lue par Java) et ne convient pas à l'automatisation- J'ai essayé 2 différentes façons de le faire avec Powershell:
Way 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
Mais j'obtiens l'erreur suivante:
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
A whoami
simples fonctionne de cette façon a imprime l'utilisateur spécifié dans $ username mais selon ce lien, il semble que ce n'est pas possible avec la commande Exchange (mais je ne sais pas à quel point la source est fiable): http://thwack.solarwinds.com/thread/40524
Way 2 (comme le suggère ici 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
Mais le problème est que l'URI http://$computerName/powershell
n'existe pas (je reçois WinRM 502 exception) et je ne sais pas comment obtenir un Powershell virtuel Répertoire sur un serveur où seuls les outils de gestion d'Exchange 2007 sont installés.
Donc, mes questions sont: Y at-il une autre façon de faire cela? Que fais-je de mal dans Way 1 & 2 (plus comment puis-je ajouter le Powershell VD avec Way 2)? Est-ce possible? Je cours Java (7 x 64) sur un WinSrv2012 avec les outils de gestion d'échange 2007 installés. Le serveur Exchange fonctionne sur la version 2007. Le script est Get-MailboxStatistics -server ExSrv
.
Cela me dérange depuis près d'une semaine maintenant, donc j'apprécie grandement toute aide.