我是PHP的新手,正在使用WAMP并尝试。。。使用php调用powershell脚本,但它在提交时不会显示我的任何输出。
这是代码:
HTML :
<html>
<head>
<title>Tool</title>
<body><center><h1>Welcome</h1><center/>
<p><img src="images/google.gif"></p>
<form action="welcome.php" method="post">
<input type="text" name="number"><br><br>
<input type="submit" value="Submit">
</form>
welcome.php code :
<html>
<body>
<?php
$CMD = 'powershell -command C:'wamp'www'Badge'scripts'badge.ps1 ' . $_POST['number'];
?>
</body>
</html>
我只得到一个空白页面,但在提交时,它会将页面重定向到localhost/bardge/welcome.php
如果我给出这样的,我的powershell代码就会运行
powershell.exe -command C:'wamp'www'Badge'scripts'badge.ps1 12345 and it displays my name.
甚至我也尝试过在php中使用这个:
<?php
shell_exec ($_POST("powershell.exe -command C:'wamp'www'Badge'scripts'badge.ps1 ['number']");
shell_exec("exit");
?>
因此,任何关于什么可能是错误的或我需要做什么更改的想法都可以使用php将html的文本值调用到powershell。
如果只是传递脚本,则不需要命令标志。此外,我发现当我通过PHP执行脚本时,它会被默认的ExecutionPolicy设置阻止,你可以用标志覆盖它。试试这个:
$cmd = 'powershell.exe -ExecutionPolicy RemoteSigned C:'wamp'www'Badge'scripts'badge.ps1 '.$_POST['number'];
if(exec($cmd, $out)){
echo join($out);
}
1.首先,在php上使用powershell之前,必须在Windows上打开powershell(不使用php),并在powershell窗口中键入此脚本(不带引号)"Set ExcetuionPolicy RemoteSigned"。要验证此更改,请在窗口powershell上键入此命令(不带引号)"Get-ExecutionPolicy"。如果显示"RemoteSigned"文本,则表示更改成功。
2.其次,现在您可以使用php访问powershell。您不能在exec命令和powershell中使用双引号。我不知道为什么,但当我尝试返回错误时。请尝试使用单引号命令执行此代码。
$output = array();
$return_code = 0;
$last_line = exec('powershell.exe Write-Host Hello World! ', $output, $return_code);
echo "<pre>";
print_r($output);
echo "</pre>";
这段代码带有ps脚本。
$output = array();
$return_code = 0;
$last_line = exec('powershell.exe C:'xampp'htdocs'powershell'powerscript2.ps1 2>&1 ', $output, $return_code);
echo "<pre>";
print_r($output);
echo "</pre>";
这个示例powerscript2.ps1
# Filename: Hello.ps1
Write-Host
Write-Host 'Hello World!'
Write-Host "Good-bye World! `n"
# end of script