Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PowerShell输出带前导选项卡的字符串?_Powershell_Piping - Fatal编程技术网

如何使用PowerShell输出带前导选项卡的字符串?

如何使用PowerShell输出带前导选项卡的字符串?,powershell,piping,Powershell,Piping,在PowerShell中,假设我有一组字符串对象: 'a b c'.split() 我可以通过管道将它们传输到输出流: 'a b c'.split() | Write-Host 所以我在不同的行中得到“a”,“b”和“c” 现在:如何更改此设置,使每行(字符串)都有一个前导制表符? 我知道tab由't'表示,所以我的第一次尝试是: 'a b c'.split() | Write-Host "`t$_" 这给了我一个错误: 写入主机:无法将输入对象绑定到该命令的任何参数,因为该命令不接受管道

在PowerShell中,假设我有一组字符串对象:

'a b c'.split()
我可以通过管道将它们传输到输出流:

'a b c'.split() | Write-Host
所以我在不同的行中得到“a”,“b”和“c”

现在:如何更改此设置,使每行(字符串)都有一个前导制表符?

我知道tab由't'表示,所以我的第一次尝试是:

'a b c'.split() | Write-Host "`t$_"
这给了我一个错误:

写入主机:无法将输入对象绑定到该命令的任何参数,因为该命令不接受管道输入或输入和 其属性与接受管道输入的任何参数都不匹配

好的,让我们去掉选项卡,只使用$,我认为它表示管道返回的“当前”对象

'a b c'.split() | Write-Host $_
同样的错误:

写入主机:无法将输入对象绑定到该命令的任何参数,因为该命令不接受管道输入或输入和 其属性与接受管道输入的任何参数都不匹配

很明显,这里有一些我基本上误解了的东西,所以我希望有人能指出这是什么!另外,忽略
写入主机的使用:我只是出于说明的目的使用它,我的意图是最终通过管道
写入详细的

尝试以下方法:

'a b c'.split() | foreach {write-host "`t$_"}
试试这个:

'a b c'.split() | foreach {write-host "`t$_"}
试试这个

  'a b c'.split() | %{Write-Host "`t$_"}
或短

  'a b c'.split() | %{"`t$_"}
试试这个

  'a b c'.split() | %{Write-Host "`t$_"}
或短

  'a b c'.split() | %{"`t$_"}
还是这个

   'a b c'.Split() | select @{N="Value";E={"`t$_"}}
还是这个

   'a b c'.Split() | select @{N="Value";E={"`t$_"}}

这就成功了,谢谢。虽然我仍然不知道为什么$u可以在管道上使用一些cmdlet,而不是其他cmdlet。$u是foreach,where等,当您在这里使用{}detail时,它起到了作用,谢谢。虽然我仍然不确定为什么$u0在管道上使用某些cmdlet而不是其他cmdlet。当您在此处使用{}detail时,$uu是foreach,where等。
$\uuuu
变量是由某些cmdlet创建的,它在管道中传递内容时默认情况下并不存在。这就是为什么对每个
都使用
for each
cmdlet创建
$\u
变量,然后调用脚本/表达式。@Sean啊,好吧,现在更有意义了
$\u
变量是由某些cmdlet创建的,它不仅仅在沿管道传递内容时默认存在。这就是为什么对每个
都使用
for each
cmdlet创建
$\ucode>变量,然后调用脚本/表达式。@Sean啊,好的,现在更有意义了。这并没有提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论。-问题是“现在:我如何更改它,使每一行(字符串)都有一个前导制表符?”,我的代码提供了这个问题的答案…这并没有提供这个问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论。-问题是“现在:我如何更改它,使每一行(字符串)都有一个前导制表符?”,我的代码提供了这个问题的答案。。。