如何在Powershell中通过管道传递旧命令的输出?

夏尔维德

我想将“传统”命令中的stdout传送到powershell中,但是我找不到正确的语法。例如,在这里我想通过以下方式获得最后一行的输出git tag

git tag | Get-Content -Tail 1

上面的方法不起作用,因为 The input object cannot be bound to any parameters for the command

这是怎么做的?我希望我不必使用中间文件。

关于克鲁格

的原因

git tag | Get-Content -Tail 1

给出以上错误是因为Get-Content是预期结果的错误cmdlet。您无法将内容通过管道传递到Get-Content,仅可以传递某些参数(按名称):

Inputs
System.Int64, System.String[], System.Management.Automation.PSCredential

You can pipe the read count, total count, paths, or credentials to Get-Content.

如LotPings的答案所示,正确的cmdlet为Select-Object然而,由于其他的建议指示(和违背由Charlweed断言),遗留的命令的输出IS(通常)字符串(线)的阵列。这就是为什么(git tag)[-1]给出最后一行。但是,如果遗留命令仅产生一行,则此操作将无效。在这种情况下,输出为单个字符串,而不是1个字符串的数组。因此(git tag)[-1]将返回该的最后一个字符要强制输出始终为数组,请使用“ Array子表达式运算符” @,如下所示:

@(git tag)[-1]

我不知道返回的行的格式,git tag但总的来说$(<some legacy command>).split()是错误的。
首先,这$是多余的。它告诉powershell将()的内容评估为管道表达式,但是在命令行上使用()而不使用$,则具有相同的含义。$()在双引号(可扩展)字符串中使用,以插入表达式的字符串值。
其次,.split()在legacy命令的结果上使用可能会导致2种​​效果之一。如果输出为单行,则为单个字符串并被.split()调用。如果它是一个字符串数组(多行),则这将导致powershell执行成员枚举(因为Array没有split方法)。在这两种情况下,效果都与

git tag | foreach { $_.split() }

调用会.split()导致对的调用String.Split(char[]),并为分隔符传递一个空数组。

每个分隔符元素定义一个单独的由单个字符组成的定界符。如果分隔符参数为null或不包含任何字符,则该方法将空格字符视为定界符。空格字符由Unicode标准定义;如果将它们传递给Char.IsWhiteSpace方法,则它们返回true。

最终的输出是将每个输入行拆分为单个词(如空白所界定)。

虽然我怀疑CharlWeed早就知道了正在发生的事情,但我还是为那些阅读此问题的人提供了此描述,以防止他们误导。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Powershell中通过管道传递来自foreach的输出

来自分类Dev

如何在Python中通过管道传递Python进程的输出?

来自分类Dev

如何使用通过批处理管道传递的两个命令中的相同输出文件

来自分类Dev

Powershell如何通过管道传递交互式命令

来自分类Dev

如果成功,则通过管道传递命令的输出

来自分类Dev

输出通过管道传递给变量的命令

来自分类Dev

如何将输出通过管道传递到sh脚本并将其通过管道传递给命令?

来自分类Dev

如何在bash命令管道中修改输出

来自分类Dev

将命令的输出通过管道传递到rm命令

来自分类Dev

如何在R中通过管道传递到if语句

来自分类Dev

如果通过管道将cat命令传递到另一个命令,如何停止cat命令的输出?

来自分类Dev

通过单个命令将awk的管道输出传递给sed

来自分类Dev

将Git Bash中命令的输出通过管道传输到Windows上的Powershell脚本

来自分类Dev

如何在Powershell管道中引用前一个“管道”的输出?

来自分类Dev

如何将* all *输入的shell命令的输出传递给另一个?(例如,将所有内容通过管道传送到“ lolcat”中)

来自分类Dev

如何在运行finger命令后使用管道将输出传递给xargs命令并更新用户计划

来自分类Dev

如何在PowerShell中的While循环内传递命令结果?

来自分类Dev

转换命令的输出如何传递/管道而不是保存到文件?

来自分类Dev

如何通过管道将std和err输出到bash脚本中的单独命令?

来自分类Dev

如何通过bash脚本中的管道提取命令输出的2条信息?

来自分类Dev

如何通过管道将std和err输出到bash脚本中的单独命令?

来自分类Dev

如何将命令输出通过管道传输到 shell 中的 CSV 文件?

来自分类Dev

如何通过R中的管道传递参数?

来自分类Dev

如何通过管道将Java应用程序的PID传递到命令中?

来自分类Dev

子Shell中的Bash BG流程:显示输出以及通过管道传递给命令(Docker CMD启动Shell脚本)

来自分类Dev

如何通过管道传递“经过的时间”(或其他输出)

来自分类Dev

如何通过命令管道所有bash终端输出

来自分类Dev

如何将文件的输出通过管道传输到命令?

来自分类Dev

如何通过Powershell在其参数中运行带有管道字符的命令?

Related 相关文章

  1. 1

    如何在Powershell中通过管道传递来自foreach的输出

  2. 2

    如何在Python中通过管道传递Python进程的输出?

  3. 3

    如何使用通过批处理管道传递的两个命令中的相同输出文件

  4. 4

    Powershell如何通过管道传递交互式命令

  5. 5

    如果成功,则通过管道传递命令的输出

  6. 6

    输出通过管道传递给变量的命令

  7. 7

    如何将输出通过管道传递到sh脚本并将其通过管道传递给命令?

  8. 8

    如何在bash命令管道中修改输出

  9. 9

    将命令的输出通过管道传递到rm命令

  10. 10

    如何在R中通过管道传递到if语句

  11. 11

    如果通过管道将cat命令传递到另一个命令,如何停止cat命令的输出?

  12. 12

    通过单个命令将awk的管道输出传递给sed

  13. 13

    将Git Bash中命令的输出通过管道传输到Windows上的Powershell脚本

  14. 14

    如何在Powershell管道中引用前一个“管道”的输出?

  15. 15

    如何将* all *输入的shell命令的输出传递给另一个?(例如,将所有内容通过管道传送到“ lolcat”中)

  16. 16

    如何在运行finger命令后使用管道将输出传递给xargs命令并更新用户计划

  17. 17

    如何在PowerShell中的While循环内传递命令结果?

  18. 18

    转换命令的输出如何传递/管道而不是保存到文件?

  19. 19

    如何通过管道将std和err输出到bash脚本中的单独命令?

  20. 20

    如何通过bash脚本中的管道提取命令输出的2条信息?

  21. 21

    如何通过管道将std和err输出到bash脚本中的单独命令?

  22. 22

    如何将命令输出通过管道传输到 shell 中的 CSV 文件?

  23. 23

    如何通过R中的管道传递参数?

  24. 24

    如何通过管道将Java应用程序的PID传递到命令中?

  25. 25

    子Shell中的Bash BG流程:显示输出以及通过管道传递给命令(Docker CMD启动Shell脚本)

  26. 26

    如何通过管道传递“经过的时间”(或其他输出)

  27. 27

    如何通过命令管道所有bash终端输出

  28. 28

    如何将文件的输出通过管道传输到命令?

  29. 29

    如何通过Powershell在其参数中运行带有管道字符的命令?

热门标签

归档