我有以下问题:
我有一个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暂停需要两个按键来解除
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] 举报,一经查实,本站将立刻删除。