带有PHP的Powershell脚本


Powershell script with PHP

我是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