【问题标题】:Pass variable from PHP to Powershell script将变量从 PHP 传递到 Powershell 脚本
【发布时间】:2022-01-21 12:18:47
【问题描述】:

我正在尝试将变量从 PHP 传递到 powershell 脚本。

我的 PHP 代码是:

shell_exec("powershell.exe -ExecutionPolicy Bypass -NoProfile -InputFormat none -file test.ps1 '$txt' < NUL ");

我正在尝试使用以下方法在 powershell 中捕获它:

param (
  [string]$txt
)

Add-Content "test.txt" $txt

$txt 是一个字符串变量,因为我可以将它写入 PHP 的 txt 文件中。执行 powershell 时,我不知道我错在哪里。

【问题讨论】:

  • 有什么问题? test.txt 没有被创建吗?
  • text.txt 已创建,但为空。没有解析 $txt 变量值。
  • 根据the docs-InputFormat参数支持'Text'或'XML'。你给它“无”。尝试将其更改为Text&lt; NUL 不应该是 &gt; $null 吗??
  • @mklement0 抱歉,直到现在我才有机会检查您的解决方案。非常感谢,它确实解决了我的问题。
  • 不用担心;很高兴听到它起作用了;我的荣幸。

标签: php powershell exec


【解决方案1】:

使用以下内容:

shell_exec("powershell.exe -ExecutionPolicy Bypass -NoProfile -file test.ps1 \"$txt\"");

注意:如果$txt 的值嵌入了" 字符,则需要对其进行转义。

  • 将参数传递给通过-File 执行的脚本文件时,PowerShell CLI 无法识别'...' 引用;使用"..."

    • 您对'$txt' 的尝试不应导致 文件,但它会包含' 字符。 作为论点的一部分;如果$txt 恰好包含空格,则每个以空格分隔的单词都将成为一个单独的参数,第一个以' 开头,最后一个以' 结尾
  • 由于您不是通过标准输入提供输入,因此不需要 -inputFormat&lt; NUL

【讨论】:

  • 享受您的咖啡吧!你应得的。
  • 谢谢你,@DanielB - 非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
  • 2014-12-11
  • 2011-11-05
  • 1970-01-01
相关资源
最近更新 更多