2017-05-02 2 views
-2

ausführen Ich möchte Powershell über PHP-Programm ausführen. In Powershell muss ich den Befehl "Get-FileHash -Algorithmus sha256. \ SHYAM.jpeg" ausführen, um einen Hashwert zu generieren. Shyam.jpeg ist eine Datei, die sich im Verzeichnis C: \ wamp64 \ www \ Dedup befindet. Hier ist mein CodeWie Powershell-Befehl in PHP

<?php 
$psPath = "C:\\Windows\\SysWOW64\WindowsPowerShell\v1.0\\powershell.exe"; 
$psDIR = "C:\\wamp64\\www\\Dedup"; 
$psScript = "SHYAM.JPEG"; 
$runScript = $psDIR. $psScript; 
$runCMD = $psPath.'Get-FileHash -Algorithm sha256./'.$psDIR.$psScript; 
$out= shell_exec($runCMD); 
echo "<pre>"; 
print_r($out); 
echo "</pre>"; 
?> 

Aber es funktioniert nicht. Ich kämpfe darum, dass es funktioniert. Wenn ich den Befehl "Get-FileHash -Algorithmus sha256. \ SHYAM.jpeg" in PowerShell ausprobiert habe, funktioniert es einwandfrei. Bitte hilf mir.

+0

Gibt es wirklich keine Funktion in PHP, dies ohne andere Sprachen zu tun? Die Verwendung von Powershell in PHP sieht ein bisschen unheimlich für mich :) –

Antwort

-1

Ersetzen Sie die ./ durch ein Leerzeichen und fügen Sie vor dem Get-FileHash ein Leerzeichen ein.

$runCMD = $psPath.'Get-FileHash -Algorithm sha256./'.$psDIR.$psScript; 

Um

$runCMD = $psPath.' Get-FileHash -Algorithm sha256 '.$psDIR.$psScript; 
+0

es funktioniert nicht –

0

Der Ausgang ist C:\Windows\SysWOW64\WindowsPowerShell v1.0\powershell.exeGet-FileHash -Algorithm sha256./C:\wamp64\www\DedupSHYAM.JPEG

einen Backslash Escape in dem Pfad zu Powershell fehlte, ohne Leerzeichen, falschen Ordnerpfad, wird es nicht funktionieren.

Versuchen Sie so etwas wie:

<?php 
$psPath = "C:\\Windows\\SysWOW64\\WindowsPowerShell\\v1.0\\powershell.exe"; 
$fileDir = "C:\\wamp64\\www\\Dedup"; 
$fileName = "SHYAM.JPEG"; 
$runCMD = "$psPath -Command \"Get-FileHash -Algorithm SHA256 -Path '$fileDir\\$fileName' | Select-Object -ExpandProperty Hash\""; 
$out= shell_exec($runCMD); 
echo "<pre>"; 
print_r($out); 
echo "</pre>"; 
?> 

habe ich nicht versucht, es zu exec, aber das zumindest druckt einen vernünftigen suchen Befehl.