gpt4 book ai didi

php - 从 php 执行 Powershell 脚本

转载 作者:可可西里 更新时间:2023-10-31 22:13:01 26 4
gpt4 key购买 nike

我正在尝试从 PHP 执行 powershell 脚本,但它似乎不起作用。

脚本“newEvent.ps1”在 Exchange 服务器上创建一个事件。

$psPath = "powershell.exe";
$psDIR = "C:\\wamp\\www\\ant\\assets\\ps\\";
$psScript = "newEvent.ps1";
$runScript = $psDIR. $psScript;
$runCMD = $psPath." ".$runScript." 2>&1";

echo "\$psPath $psPath <br>";
echo "\$psDIR $psDIR <br>";
echo "\$psScript $psScript <br>";
echo "\$runScript $runScript <br>";
echo "\$runCMD $runCMD <br>";

exec( $runCMD,$out,$ret);

echo "<pre>";
print_r($out);
print_r($ret);
echo "</pre>";

输出:

$psPath powershell.exe
$psDIR C:\wamp\www\ant\assets\ps\
$psScript newEvent.ps1
$runScript C:\wamp\www\ant\assets\ps\newEvent.ps1
$runCMD powershell.exe C:\wamp\www\ant\assets\ps\newEvent.ps1 2>&1

Array
(
[0] => File C:\wamp\www\ant\assets\ps\newEvent.ps1 cannot be loaded because the execut
[1] => ion of scripts is disabled on this system. Please see "get-help about_signing"
[2] => for more details.
[3] => At line:1 char:39
[4] => + C:\wamp\www\ant\assets\ps\newEvent.ps1 <<<<
[5] => + CategoryInfo : NotSpecified: (:) [], PSSecurityException
[6] => + FullyQualifiedErrorId : RuntimeException
[7] =>
)

如果我在命令行上运行 powershell.exe C:\wamp\www\ant\assets\ps\newEvent.ps1,它工作正常。

这是我第一次尝试这样的事情。我运行了 Set-ExecutionPolicy RemoteSigned -Scope LocalMachine 但它仍然给我同样的错误。事实上,我运行了 Set-ExecutionPolicy unrestricted,但它仍然是一样的。

最佳答案

看起来你的命令被单引号括起来了。我想如果你删除它们,你的命令应该运行。

shell_exec 返回您运行的命令的输出。为了进一步诊断,将输出存储在一个变量中,然后打印出来:

$output = shell_exec($runCMD);
echo '<pre>' . $output . '</pre>';

确保启用运行脚本。默认情况下该功能处于关闭状态。您必须在每台要运行 PowerShell 脚本的计算机上启用脚本的执行。运行 about help_signing 了解更多信息。

Microsoft 建议运行 Set-ExecutionPolicy RemoteSigned -Scope LocalMachine。这允许机器上的所有用户帐户都可以毫无问题地运行本地脚本,但需要确认才能运行从互联网下载的脚本。这需要在管理提示符下运行。如果您运行的是 64 位操作系统,则需要从 64 位和 32 位 shell 执行此操作。

关于php - 从 php 执行 Powershell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5317315/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com