Ich habe ein paar Funktionen und Variablen für alle Maschinen Benutzer definiert wie folgt:Ausführen von Windows Powershell von PHP nicht bewusst Aktuelles Profil
Set-Content $Profile.AllUsersCurrentHost (Get-Content path/to/myprofile.ps1)
des Do-Stuff
einer meiner definierten Funktionen aufrufen lassen. Das funktioniert sehr gut. Und wann immer die Powershell-Konsole aufgerufen wird und Sie "Do-Stuff" + ENTER eingeben, funktioniert es.
Jetzt habe ich versucht, diese Funktion von PHP ein paar Möglichkeiten zu nennen, und ich habe ein paar Probleme. Bedenken Sie:
$res = shell_exec('Powershell Do-Stuff');
print_r($res);
Was ich erhalte, ist dieser Fehler:
Do-Stuff: The term 'Do-Stuff' is not recognized as the name of a
cmdlet, function, script file, or operable program....
ich auch versucht habe:
$res = shell_exec('Powershell -File path/to/script.ps1');
print_r($res);
Wenn die Datei script.ps1
Do-Stuff
enthält oder eine der anderen definiert Funktionen, was ich bekomme, ist die gleiche Art von Fehlermeldung.
Nun, was mir sagt, ist, dass das aufrufende PHP-Skript nicht als Windows-Rechner Benutzer erkannt wird, und die aktuell geladene $Profile
wird nicht angewendet.
Also, was ist die Lösung dafür? Wie kann ich das geladene Profil für den aktuellen Benutzer oder alle Benutzer erhalten, die auf das laufende PHP-Skript angewendet werden sollen?