将管道作为参数发送到Powershell中的外部程序?

将管道作为参数发送到Powershell中的外部程序?,powershell,Powershell,在运行命令以查找路径中最近修改的目录时,我不断遇到以下错误:从PowerShell远程: head:术语“head”不能识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试 At line 1: char: 95 + ... d /somedir ; (lastmod=$(ls -tda -- */ | head -n 1); .... 我正在按照以下方式运行代码: & plink "bob@server" "cd /s

在运行命令以查找路径中最近修改的目录时,我不断遇到以下错误:从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将扩展
$
符号。如果使用单引号,则不会发生这种情况。

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

为了补充Bruce的答案,还可以使用严重重音(`)从双引号字符串中转义特殊字符,这是powershell中的转义字符

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

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

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

& plink "bob@server" "cd /somedir ; (lastmod=$(ls -tda -- */ `| head -n 1); ls -la $lastmod)"
这意味着,如果您确实需要字符串中的任何变量,您仍然可以使用特殊字符