murat1895 Geschrieben 10. Juni 2020 Teilen Geschrieben 10. Juni 2020 (bearbeitet) Hallo zusammen, ich habe folgendes Problem. Und zwar möchte ich via php ein powershell-Script ausführen. Generell sollte es ja wie folgt funktionieren: echo Shell_Exec('powershell.exe -executionpolicy bypass -NoProfile -File "C:\inetpub\wwwroot\project_a\outlook_abwesenheit.ps1"'); Um auszuschließen, dass es sich nicht um ein Berechtigungsproblem handelt, habe ich vollzugriff auf die "powershell.exe" gegeben. In der php.ini habe ich geprüft, ob die Funktion disabled ist, was aber nicht der Fall ist. Nach der in der php.ini definierten max_execution_time zeit erhalte ich einen Timeout. Irgendwelche Fehler werden nicht angezeigt. (PHP 7.3, IIS) Hat jemand eine Idee? Bearbeitet 10. Juni 2020 von murat1895 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_n4p_ Geschrieben 10. Juni 2020 Teilen Geschrieben 10. Juni 2020 (bearbeitet) mal passthru() versucht um die ausgabe von powershell zu sehen? Bearbeitet 10. Juni 2020 von _n4p_ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Visar Geschrieben 10. Juni 2020 Teilen Geschrieben 10. Juni 2020 vor 49 Minuten schrieb murat1895: Irgendwelche Fehler werden nicht angezeigt. (PHP 7.3, IIS) Auf welches Level ist das error_reporting gesetzt? Was sagen die Logs? Ansonsten: AFAIK ist PHP zumindest bei Funktionsnamen case sensitive, d.h. es kennt kein Shell_Exec, sondern lediglich shell_exec. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
murat1895 Geschrieben 11. Juni 2020 Autor Teilen Geschrieben 11. Juni 2020 (bearbeitet) vor 10 Stunden schrieb Visar: Auf welches Level ist das error_reporting gesetzt? Was sagen die Logs? Ansonsten: AFAIK ist PHP zumindest bei Funktionsnamen case sensitive, d.h. es kennt kein Shell_Exec, sondern lediglich shell_exec. Moin moin, so ist das error_reporting gesetzt: error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED Das hier steht nur in der error.log: [10-Jun-2020 20:04:23 Europe/Berlin] PHP Fatal error: Maximum execution time of 600 seconds exceeded in C:\inetpub\wwwroot\project_a\includes\central.php on line 79 ich habe nun mal shell_exec in Kleinbuchstaben geschrieben - läuft immernoch auf einen Timeout. Bearbeitet 11. Juni 2020 von murat1895 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
murat1895 Geschrieben 11. Juni 2020 Autor Teilen Geschrieben 11. Juni 2020 Vielleicht noch eine kurze Ergänzung. die php-Funktion wird per ajax aufgerufen. Nach erreichen des Timeouts liefert die Abfrage den Fehler 500 - interner Serverfehler. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
murat1895 Geschrieben 11. Juni 2020 Autor Teilen Geschrieben 11. Juni 2020 So ich hab´s nun hinbekommen. das Powershell Skript wurde als anderer Benutzer ausgeführt, der zur Ausführung zu wenig rechte hat. Nun stehe ich vor dem nächsten Problem. Ich versuche dieses Script nun zu nutzen, um auf dem Mailserver eine Signatur reinzudrücken: $passwd = Get-Content "C:\test.txt" | ConvertTo-SecureString -Force -AsPlainText $computername = "mailserver" $cred = new-object -typename System.Management.Automation.PSCredential "testadmin",$passwd $s = New-PSSession -ComputerName $computername -Credential $cred; Invoke-Command -Session $s -ScriptBlock { Set-MailboxAutoReplyConfiguration -Identity testbenutzer -AutoReplyState Scheduled -StartTime "6/11/2020 08:00:00" -EndTime "6/11/2020 19:00:00" -InternalMessage "Internal auto-reply message" } Ich bekomme hier die Rückmeldung, dass die Funktion Set-MailboxAutoReplyConfiguration nicht bekannt ist. In der normalen Poweshell ist diese auch nicht bekannt, allerdings in der auf dem Mailserver installierten Exchange Management Shell schon. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
awesomenik Geschrieben 11. Juni 2020 Teilen Geschrieben 11. Juni 2020 Das liegt daran, weil du das über die Exchange Management Shell machst und nicht direkt über die Powershell. Hier hat jemand ziemlich gut erklärt, was da der Unterschied ist: https://www.interfacett.com/blogs/how-to-run-the-exchange-management-shell-ems-in-powershell/ Daraus solltest du ableiten können, wie du dein Script anpassen musst. murat1895 reagierte darauf 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
murat1895 Geschrieben 25. Juni 2020 Autor Teilen Geschrieben 25. Juni 2020 Super danke hat nun funktioniert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.