Je suis un peu nouveau à la fois PHP et Powershell. J'ai créé un site Web pour exécuter un script PowerShell, qui vérifie le répertoire de plusieurs serveurs et renvoie les éléments de ce répertoire. Sur le site Web, ils s'affichent dans un tableau de données organisé.Powershell Script Sorties vides lorsqu'il est exécuté sur PHP
Mon problème est que lorsque php exec() appelle le script, il s'exécute mais la sortie de données est vide. Pourquoi cela se produit-il lorsque php exécute le script?
Voici le fichier powershell. J'ai même ajouté quelques sessions d'accréditation, pensant que cela devait être un problème d'identification.
Remove-PSDrive target: -ErrorAction SilentlyContinue
$global:username = "domain\user"
$global:password = ConvertTo-SecureString –String "MyPassword" –AsPlainText -Force
$global:cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $global:username, $global:password
$output_Table = @()
$today = get-date
$html_output [email protected]()
[email protected]()
New-PSDrive -Name target -PSProvider FileSystem -Credential $global:cred -Root "\\serverName\filedir" | Out-Null
$tableData+= '<table><tr><th>First Feed</th><th>Updates:DAILY</th></tr> <tr><th>FileName</th><th>FileDate</th></tr>'
foreach ($file in (ls target:))
{GetFeed(-7)}
$tableData +='</table>'
Remove-PSDrive -Name target -Force
$html_output += $tableData
$html_output += '</div>'
$html_output | Out-File "C:\xampp\htdocs\script_results.txt" -Encoding utf8
$today | Out-file "C:\xampp\htdocs\script_TimeStamp.txt" -Encoding utf8
Le script_result.txt contient les fichiers avec les balises HTML. PHP lira plus tard ceci et l'enverra dans la page html.
Le code PHP qui appelle ce script est le suivant.
<?php
if(isset($_POST['submit'])){
set_time_limit (300);
$output = array();
$return_code = 0;
$last_line = exec('powershell.exe C:\xampp\htdocs\script.ps1 2>&1 ', $output, $return_code);
} ?>
plus tard il y a cette pièce de code pour afficher les résultats. Encore une fois, si je lance moi-même le script powershell, il renvoie le script_result avec la sortie désirée. Si PHP l'exécute, le script s'exécute, mais la sortie ne contient aucune donnée de fichier.
À quoi est-ce dû?
peut-être un problème de permission. L'utilisateur php fonctionne devrait avoir les permissions pour faire ce que vous voulez. – steven
Quand je le teste, je regarde mon gestionnaire de tâches. Je vois le powershell.exe apparaître avec mon nom d'utilisateur dessus. : / –