我目前正在构建一个小应用程序,用于从HTML表单中检索信息(实际上是多个复选框),并将这些信息作为args传递给powershell exec命令.

目前我得到的是这样的数组:

Array
(
    [0] => Group1
    [1] => Group2
    [2] => Group3
    [3] => Group4
    [4] => Group5
    [5] => Group6
)

起初我想把这个数组放在CSV文件中,然后从powershell脚本中读取这个CSV,但我想知道是否有一种方法可以直接在shell_exec中使用这个数组作为arg(powershell格式化的数组@("Group1","Group2")

我的php(其中$arg2是上面的数组):

<?php
$Psscript = "C:\Scripts\script.ps1";
$arg1 = $_POST["data1"];
$arg2 = $_POST["data2"];
echo '<pre>'; print_r($arg2); echo '</pre>';

shell_exec("powershell -InputFormat none -ExecutionPolicy ByPass -NoProfile -Command $Psscript $arg1 $arg2");
?>

有没有人成功地让这样的事情工作?

感谢您的任何建议,如果您需要更多的信息,请不要犹豫,询问;)

编辑:当前php

$Psscript = "C:\Scripts\script.ps1";

$arg1 = $_POST["arg1"];
$arg2 = $_POST["arg2"];
$groups = '@("'. implode('","', $_POST["groups"]) .'")';

echo $groups;

$result = shell_exec("powershell -InputFormat none -ExecutionPolicy ByPass -NoProfile -Command $Psscript $arg1 $arg2 $groups 2>&1");
echo $result;
}
?>

Powershell:

###### Args ######
$arg1 = $args[0];
$arg2 = $args[1];
$groups = $args[2];
$fullname = "$arg1.$arg2"

if (!($session)) {$session = New-PSSession -ComputerName 'srv01' -ConfigurationName "Microsoft.PowerShell32" -Credential $cred}

    Invoke-Command -Session $sessionAD -ScriptBlock {
    Import-Module ActiveDirectory
    foreach ($group in $using:groups)
    {
    Add-ADGroupMember -Identity "$group" -Members "$using:fullname"
    }
    }

Remove-PSSession $sessionAD

推荐答案

在两端使用implode加一位字符串连接,可以相当容易地生成指定的格式,以便插入powershell命令字符串:

$arg2 = array
(
    0 => "Group1",
    1 => "Group2",
    2 => "Group3",
    3 => "Group4",
    4 => "Group5",
    5 => "Group6"
);

echo '@("'.implode('","', $arg2).'")';

输出:

@("Group1","Group2","Group3","Group4","Group5","Group6")

演示:https://3v4l.org/lhn38

Php相关问答推荐

提交表格后的重定向不起作用

输入手写CSV时在PHP中进行日期判断

WooCommerce中仅在单一产品和产品档案页面中将小数设置为大写

一列必须指定多个变量的Laravel查询

与会者在WooCommerce中按购物车项目数量自定义 checkout 字段

如何使用这种格式构建XML?

Laravel:测试命令时无法获取工作通知::AssertSentTo

从订单项目中获取ACF WooCommerce产品价值

以编程方式同步 WPML 翻译更改 Woocommerce 产品销售价格

如何使用 AJAX、PHP 和 MYSQL 在 Select 项目时在文本框中填充数据

WooCommerce:如果订单总数为零,则隐藏本地取货运输选项

由于 PHP 版本不受支持,如何终止 PHP 脚本?

正则表达式将文本替换为标签 html 以字符开头

htaccess Rewriterule 无法以任何方式工作

使用其ID查询和捕获与订单相关的其他详细信息的shopware 6方法

为WooCommerce中的运输方式ID设置必填的 checkout 订单备注字段

.htaccess环境变量条件不被判断

如何使用 WhatsApp Cloud API 向 WhatsApp 发送消息,而无需在发送消息之前注册收件人号码?

如果有很多重定向,PHP curl 的行为不像命令行 curl

为什么 8.0 之前的 PHP 版本拒绝命名空间Random\Namespace作为无效语法?