如何使PowerShell连接一些命令输出和字符串?

如何使PowerShell连接一些命令输出和字符串?,powershell,Powershell,注意: PS Z:\dev> echo $(hg root)\windows Z:\dev \windows PS Z:\dev> PS Z:\dev\windows\nc> echo $((hg root).Trim())\Windows Z:\dev \Windows PS Z:\dev\windows\nc> $r = (hg root).Trim() PS Z:\dev\windows\nc> echo $r\Windows Z:\dev\Windows

注意:

PS Z:\dev> echo $(hg root)\windows
Z:\dev
\windows
PS Z:\dev>
PS Z:\dev\windows\nc> echo $((hg root).Trim())\Windows
Z:\dev
\Windows
PS Z:\dev\windows\nc> $r = (hg root).Trim()
PS Z:\dev\windows\nc> echo $r\Windows
Z:\dev\Windows
PS Z:\dev\windows\nc> $r = hg root
PS Z:\dev\windows\nc> echo $r\Windows
Z:\dev\Windows
PS Z:\dev\windows\nc>
我想查看Z:\dev\windows。尝试引用$(hg root)没有帮助

编辑

注意:

PS Z:\dev> echo $(hg root)\windows
Z:\dev
\windows
PS Z:\dev>
PS Z:\dev\windows\nc> echo $((hg root).Trim())\Windows
Z:\dev
\Windows
PS Z:\dev\windows\nc> $r = (hg root).Trim()
PS Z:\dev\windows\nc> echo $r\Windows
Z:\dev\Windows
PS Z:\dev\windows\nc> $r = hg root
PS Z:\dev\windows\nc> echo $r\Windows
Z:\dev\Windows
PS Z:\dev\windows\nc>
我想缩小我的问题范围。我对一行解决方案特别感兴趣,因为我习惯于在Bash中这样做(echo`hg root`/windowsjust works)

编辑2

PS Z:\dev> Write-Host $(hg root)\windows
Z:\dev \windows
PS Z:\dev> Write-Host $((hg root).Trim())\windows
Z:\dev \windows
PS Z:\dev>

写主机也不好-请注意输出中Z:\dev\windows之间的空格。

它看起来像是
hg root
的结果包含了一个换行符

两种可能性:

echo $((hg root).Trim())\Windows

$r = (hg root).Trim()
echo $r\Windows
(我倾向于使用后者,因为后者更清晰,尤其是在脚本中。)

附加(基于评论,以及有疑问的附加): 不清楚为什么第一种方法不起作用,因为我没有安装Mercurial(我想是这样)。我试过:

echo Foo$((Out-String -InputObject "Bar`n").Trim())Bax
这将给出一行结果:

FooBarBax
我的第一个想法是非常仔细地查看
hg root
的输出(例如,通过十六进制转储,例如)

对于单行解决方案,回想一下语法是
$(èstatement list›)
,因此第二种方法的两行可以与管道结合使用:

echo "$(hg root | % {$_.Trim()})\Windows"
(同时将(
echo
作为别名)的整个参数放在引号中,使事情更清楚一些)。甚至使用两种说法:

echo "$($a = hg root; $a.Trim())\Windows"
(代表问题作者发布答案)

显然,我需要更多的睡眠:

PS Z:\dev> echo "$(hg root)\windows"
Z:\dev\windows
PS Z:\dev>

请接受我对这个问题的歉意-我忘了尝试整个表达式的引号。

一行解决方案不起作用,但这正是我想要的-我已经更新了我的帖子。谢谢。用
Write Host
代替
echo
试试
echo
Write Output
的别名,例如,它将在单独的一行中输出每个项目。不好-再次编辑此帖子。我正在尝试再次关闭此帖子。