Script PowerShell exécuter par une page PHP
Bonjour, Je vais faire bref parce que c'est assez urgent.
Je suis en entreprise, dans un environnement Windows, j'ai un serveur virtuelle WS19 où j'ai installer un serveur web IIS et l'objectif c'est que je programme une plateforme web qui sache communiquer avec l'Active Directory. Donc j'ai en HTML CSS PHP ma plateforme qui permet par exemple de déverrouiller des comptes utilisateurs de l'AD via un script PHP. La deuxième fonctionnalité, c'est que via un script PHP aussi, on puisse réinitialiser le mot de passe d'un compte utilisateur. J'ai essayer pas mal de choses, mais ca na pas marcher pour une raison inconnue avec l'erreur:
ldap_modify: Server is unwilling to perform
Je n'a pas trainer et j'ai tout simplement décider de trouver une alternative au script PHP et a l'utilisation de la libraire LDAP, en exécutant tout simplement depuis ma page PHP, un script PowerShell qui réinitialiserai le MDP d'un compte.
Mais encore un problème. Le script marche, son exécution directe donne les résultat attendu, mais dès que je lance le script depuis la page PHP, ca ne marche pas...
Extrait PHP:
Code:
1 2 3 4 5 6
|
$newPassword = "UnPetitMDP369.....";
$script = "powershell.exe -ExecutionPolicy Unrestricted -NonInteractive -File C:\\inetpub\\wwwroot\\new3\\change_pwd.ps1 -distinguishedname 'CN=elonMusk,OU=TEST,DC=exemple,DC=com' -newPassword 'UnPetitMDP369.....'";
echo $script;
// Exécution de la commande PowerShell
$output = shell_exec($script); |
Extrait PS:
Code:
1 2 3 4 5 6 7 8 9
|
# Modifier le mot de passe de l'utilisateur
try {
Set-ADAccountPassword -Identity $distinguishedname -NewPassword $newPasswordSecure -Credential $Credential -ErrorAction Stop
#Set-ADUser -Identity $distinguishedname -ChangePasswordAtLogon $true -Credential $Credential
Write-Host "Le mot de passe a été modifié avec succès."
} catch {
Write-Host "Erreur lors de la modification du mot de passe mais le script se lance bien: $_"
} |
Résultat lors de l'exécution du script sur PowerShell directement:
Citation:
Le mot de passe a été modifié avec succès.
Résultat lors de son exécution via le PHP:
Citation:
powershell.exe -ExecutionPolicy Unrestricted -NonInteractive -File C:\inetpub\wwwroot\new3\change_pwd.ps1 -distinguishedname 'CN=elonMusk,OU=TEST,DC=exemple,DC=com' -newPassword 'UnPetitMDP369.....'
Erreur lors de la modification du mot de passe mais le script se lance bien: Impossible de trouver un objet avec l'identit� ��'CN=elonMusk,OU=TEST,DC=exemple,DC=com'�� sous�: ��DC=exemple,DC=com��.
Voila, je demande de l'aide SVP parce que je suis un peu a bout, et n'hésitez pas à me demander des précisions.