微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过php执行powershell命令

我有以下问题:

我有一个xampp服务器正在运行,我希望它执行一个PowerShell。 一个PHP触发一个包含以下代码的.bat文件

@echo cd C:OpenBRbin start /WAIT br -algorithm FaceRecognition -compare C:xampphtdocsupload C:xampphtdocsDP C:xampphtdocsresultsresult.csv start /WAIT C:xampphtdocsCSVconvertsortieren.ps1 start /WAIT C:xampphtdocsCSVconvertRemovedouble.ps1 start /WAIT C:xampphtdocsCSVconvertremove_path.ps1 start /WAIT C:xampphtdocsCSVconvertremove_foo.ps1 start C:xampphtdocsCSVconvertremove_quoatation.ps1

第一部分工作正常,直到我想执行powershell“sortieren.ps1”。 当我手动运行批处理时,它会执行并执行作业,当通过PHP触发时,它不会。 我在x86和x64 shell中设置了“Set-ExecutionPolicy Unrestricted”。 我只是困惑,因为正常的命令行工作和PowerShell不,即使设置它不受限制。

我在Windows 7上 从PHP和PowerShell 执行Powershell脚本 :常规用户的Set-ExecutionPolicy,但无法解决问题。 我错过了什么?

剥离非字母数字字符的文件名称

我怎样才能用Windows批处理脚本写一个空的ASCII字符(nul)到一个文件

从同一batch file中读取batch file的第一行?

调用batch file调用一个batch file失败

如何批量获取以字节为单位的文件夹的大小

batch file暂停需要两个按键来解除

Windows批处理:将输出从exeinput到SET VARIABLE,其中输出包含空格

为什么当if语句匹配时,我的批处理脚本同时运行if和else语句?

用批处理查找和replace值的列表

使用Windows DIR命令按时间戳sorting文件

正在运行这些命令的会话与使用PowerShell手动运行它们时的环境变量没有相同的环境变量。 你必须指定powershell的可执行文件绝对路径以及你想要运行的脚本,以便找到它们。

start /WAIT C:WindowsSystem32WindowsPowerShellv1.0powershell.exe C:xampphtdocsCSVconvertsortieren.ps1

由于问题是我认为你可能从自动处理这个方面的包中受益的环境。 这是一个允许PHP获取动态与真实PowerShell进行交互的项目。 在这里获取: https : //github.com/merlinthemagic/MTS

下载后,你只需使用下面的代码

$shellObj = MTSFactories::getDevices()->getLocalHost()->getShell('powershell'); $strCmd1 = 'first command from first script'; $return1 = $shellObj->exeCmd($strCmd1); $strCmd2 = 'second command from first script'; $return2 = $shellObj->exeCmd($strCmd2);

而不是触发一个脚本,你可以单独触发每个命令并处理返回。 您可以针对$ shellObj发出任何您喜欢的命令,该环境在整个PHP脚本的整个生命周期内都被维护。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐