首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP语法挑战

PHP语法挑战
EN

Stack Overflow用户
提问于 2015-07-16 19:56:56
回答 1查看 73关注 0票数 0

我是个Citrix管理员,一个熟练的PowerShell用户,一个使用PHP的初学者。不过,我已经创建了几个运行简单PowerShell命令的PHP页面,如本例所示:

PHP片段示例,演示如何成功地运行高级命令:

代码语言:javascript
复制
<?php 
  $my_array = array(); 
  exec('powershell.exe -command "Get-XAAdministrator|Select -Property AdministratorName,AdministratorType" <NUL ', $my_array);
?>

但是,当我试图利用前面的HTML页面中要求用户ID的POSTED变量时,我可以在PHP页面中很好地提取该变量。我可以回显并将其显示为JoeB,例如在生成的PHP页面上。但是它需要输入到PHP/PowerShell语法中,用双引号括起来。

因此,这个片段不起作用:

代码语言:javascript
复制
<?php 
  $my_array = array();
  exec('powershell.exe -command "Get-XASession | Select -Property servername, accountname, logontime | where {$_.accountname -LIKE $ID}" <NUL ', $my_array);`

--这是它在普通powershell控制台中的外观和工作方式:

代码语言:javascript
复制
Get-XASession  | select -Property servername, accountname, logontime | where { $_.accountname -LIKE "JoeB" } 

(请注意,用户ID JoeB是双引号。)

返回到PHP尝试这样做:-变量$ID是输入到前面的$ID表单中的用户ID。

  • 它正以简单的JoeB形式从HTML中提取。
  • 如果它以"JoeB“的形式输入到HTML中,并进行了类似的扩展,那么它仍然不能工作。
  • PowerShell命令实际上有效,但它显示所有XenApp会话,因为它无法正确读取$ID (帐户名称)的值,从而过滤结果。

如有任何指导,将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2015-07-16 20:15:31

您需要的内容如下:

代码语言:javascript
复制
<?php 
$my_array = array();
exec('powershell.exe -command "Get-XASession | Select -Property servername, accountname, logontime | where {$_.accountname -LIKE '.$ID.'}" <NUL ', $my_array);

您遇到的问题是,您不能像在这里那样替换单引号中的变量。它只适用于双引号。我所做的,是用引号'结束字符串,并使用点. (意思是“串联”),然后使用$Id (作为来自POST的字符串),然后再连接字符串的其余部分。

祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31463406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档