如何在PHP中运行powershell命令

时间:2017-05-02 16:43:34

标签: php powershell cryptography

我想通过PHP程序运行powershell。在powershell中,我必须运行命令" Get-FileHash -Algorithm sha256。\ SHYAM.jpeg"生成哈希值。 Shyam.jpeg是一个位于目录C:\ wamp64 \ www \ Dedup中的文件。这是我的代码

<?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>";
?>

但它不起作用。我正努力让它发挥作用。当我尝试&#34; Get-FileHash -Algorithm sha256。\ SHYAM.jpeg&#34;在powerShell中命令它工作正常。请帮帮我。

2 个答案:

答案 0 :(得分:0)

输出为C:\Windows\SysWOW64\WindowsPowerShell v1.0\powershell.exeGet-FileHash -Algorithm sha256./C:\wamp64\www\DedupSHYAM.JPEG

在PowerShell路径中缺少反斜杠转义符,没有空格,错误的文件夹路径,它无法正常工作。

尝试类似:

<?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>";
?>

我还没有试过去执行它,但至少打印出一个明智的命令。

答案 1 :(得分:-1)

用空格替换./并在Get-FileHash之前添加空格。

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

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