2012-04-13 11 views
2

Ich versuche, einen Exchange-Server mit einem Powershell-Skript abzufragen, das von PHP ausgeführt wird, und es scheint nicht zu funktionieren. Der Befehl, den ich versucht bin zu laufen ist:Ausführen eines Powershell-Skripts mit Exchange-Snap-In über PHP

powershell "Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010";"Get-CASMailbox -Identity [email protected] | fl ActiveSyncEnabled" 

Wenn ich das direkt in die Eingabeaufforderung ein, führt sie richtig und kehrt:

ActiveSyncEnabled : True

Wenn ich versuche es in PHP:

$output=shell_exec('powershell "Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010";"Get-CASMailbox -Identity [email protected] | fl ActiveSyncEnabled"'); 

Ich bekomme nichts. $ output ist gesetzt, aber leer. Wenn ich am Ende "> output.txt" hinzufüge, erhalte ich eine leere Textdatei. Ich bin in der Lage, andere, einfachere Powershell-Befehle erfolgreich über PHP auszuführen, aber nicht diesen. Der Apache-Dienst läuft als derselbe Benutzer wie wenn ich das Skript über die Eingabeaufforderung erfolgreich ausgeführt habe.

Irgendwelche Ideen?

Ich bin mit:

  • Windows Server 2008 R2 SP1 64-Bit-
  • Apache 2.2.22 32-bit
  • PHP 5.2.17 VC6 32-Bit-
  • Exchange-Verwaltungskonsole 2010
+0

Zu Testzwecken habe ich den Apache-Dienst so eingerichtet, dass er wie ich selbst läuft. In PHP gibt exec ('whoami') meine Domäne \ Benutzername zurück, den gleichen Benutzernamen, den ich verwendet habe, als ich den Befehl an der Eingabeaufforderung erfolgreich ausgeführt habe. Sollte das Konto keine Berechtigungsprobleme haben, oder fehle ich etwas? – amay83

Antwort

1

Sie können versuchen, 2>&1 am Ende des Befehls hinzufügen, zB:

$output=shell_exec('powershell "Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010";"Get-CASMailbox -Identity [email protected] | fl ActiveSyncEnabled" 2>&1'); 

Manchmal scheint ein Zeilenumbruch am Anfang der Powershell-Ausgabe shell_exec etwas anderes zu verhindern.

+0

Vielen Dank für Ihre Unterstützung! Es funktioniert immer noch nicht, aber zumindest bekomme ich jetzt einen Fehler: 'Add-PSSnapin: Für Windows PowerShell Version 2 wurden keine Snap-Ins registriert. In Zeile: 1 Zeichen: 13 + Add-PSSnapin <<< amay83

+0

Was ist der Error? – Gary

+0

Ich habe meinen vorherigen Kommentar mit dem Fehler, den ich jetzt bekomme, bearbeitet. Ich habe auch versucht, Shedals Zeichenfolge direkt in die Eingabeaufforderung einzugeben, und es wird immer noch korrekt ausgeführt und gibt 'AciveSyncEnabled: True' zurück. – amay83