【问题标题】:Sending a pipe as an argument to an external program in Powershell?将管道作为参数发送到 Powershell 中的外部程序?
【发布时间】:2025-12-24 16:55:07
【问题描述】:

运行命令以查找路径中最近修改的目录时,我不断收到以下错误:从 PowerShell 远程:

head:术语“head”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,如果包含路径,请验证路径是否正确,然后重试。

At line 1: char: 95
+ ... d /somedir ; (lastmod=$(ls -tda -- */ | head -n 1); ....

我正在运行以下代码:

& plink "bob@server" "cd /somedir ; (lastmod=$(ls -tda -- */ | head -n 1); ls -la $lastmod)"

【问题讨论】:

    标签: powershell


    【解决方案1】:

    您已将命令封装在双引号中,因此 PowerShell 正在扩展 $ 符号。如果您使用单引号,则不会发生这种情况。

    【讨论】:

      【解决方案2】:

      只是为了补充布鲁斯的答案,您还可以使用重音符 (`) 转义双引号字符串中的特殊字符,这是 powershell 中的转义字符。

      & plink "bob@server" "cd /somedir ; (lastmod=$(ls -tda -- */ `| head -n 1); ls -la $lastmod)"
      

      这意味着如果您确实需要字符串中的任何变量,您仍然可以使用特殊字符。

      【讨论】:

        最近更新 更多