powershell - 如何在没有中间变量的情况下将 cmdlet 输出作为参数传递给应用程序 (.exe)?

标签 powershell

我有以下返回字符串的 PS 命令:

(get-date -Uformat %s).remove(10, 1).substring(5,9)

我想调用应用程序 myapp.exe从当前目录以该 PS 命令的结果作为参数,我想在一行中完成(没有中间变量)。那是什么语法?

换句话说,我正在寻找 $(<command>) 的 Powershell 等效项在 bash 中。

最佳答案

./myapp.exe (get-date -Uformat %s).remove(10, 1).substring(5,9)
  • ./myapp.exe(或 .\myapp.exe)调用位于当前目录中的可执行文件 myapp.exe .

    • 如果 myapp.exe 位于 $env:PATH 中列出的目录中,请不要使用 ./\.\ 前缀。
    • 无论哪种方式,生成的进程在当前目录(文件系统提供程序位置)中运行
  • 传递给可执行文件的参数在参数模式(参见Get-Help about_Parsing)中被(适本地)解析,并且如何解释给定的(空格分隔的)参数取决于它的第一个字符:

    • 因为第一个字符是 (,所以参数被评估为一个表达式(以表达式模式解析);无论表达式的计算结果被传递给可执行文件。
      第一个位置的其他特殊字符是 $@,以及 '"(请参阅下一点)。

      • 请注意,虽然 $(...) - 子表达式运算符(参见 Get-Help about_Operators ) - 在这种情况下有效, 如果只计算一个 单个 表达式 ((...)) 就太过分了——$(...) 只是如果您想传递多个语句的输出,则需要。
    • '...' 参数(单引号)的内容被视为文字,而 "的内​​容..." 参数是一个可扩展字符串(松散地说,一个字符串,其中插入了 $ 前缀标记)。

    • 任何其他参数(未加引号且不以 (@$ 开头的参数),通过并且很大,隐式被当作可扩展字符串处理,也就是说,就像您将它包含在 "..." 中一样。

    • 关于如何在参数模式下解析未明确包含在 "..."'...' 中的参数的全面概述, 请参阅 this answer我的。

关于powershell - 如何在没有中间变量的情况下将 cmdlet 输出作为参数传递给应用程序 (.exe)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51215205/

相关文章:

windows - 如何使用 CMD/Powershell 查找目录(包括子目录)中的所有文件,然后显示具有特定扩展名的文件

powershell - 根据 FileName 将分割 FileName 的一部分写入 doc

batch-file - 将变量从批处理传递到powershell

java - PowerShell 脚本 - 提取、复制和删除 zip 文件不起作用

email - Powershell 打开带签名的电子邮件草稿

powershell - 如何将 switch 参数传递给另一个 PowerShell 脚本?

powershell - TFS 发布管理工件变量不可用

powershell - 使用api下载TFS构建工件返回401授权错误

PowerShell:如何取消注册孤立的 WMI 事件

powershell - 在PowerShell中比较数组变量