我想通过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中命令它工作正常。请帮帮我。
答案 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;