2013-06-10 1 views
1

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.

Répondre

0

Je viens de découvrir que l'exécution de commandes/Skripts distantes Powershell n'est pas prise en charge par Exchange 2007 (http://howexchangeworks.com/2009/11/exchange-2007-sp2-supports-powershell.html). Je dois donc attendre que la mise à niveau vers 2013.

Quelques solutions de contournement: http://social.technet.microsoft.com/Forums/en-US/exchangesvrgeneral/thread/4596035a-cede-4541-8b8e-e2e9bf1b40dc

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

Questions connexes