none
Powershell $_ 的工作方式是什么? 恳请大神指导 RRS feed

  • 问题

  •  Get-Service |Where-Object {$_.status -eq "running"} |Format-Table -autosize

    这条命令是将 running 状态下的服务都罗列出来。 我理解$_在这里的的工作方式是:每一条服务记录(包含了众多属性)为一个对象,$_就是指当前这一行"服务“,$_.status就是比对指针指向当前这条服务时,里面的status属性值是否是"running", 如果是"running"就把当前这条"服务”记录罗列出来。 然后进行下一行"服务“记录。

    总结:$_就是指当前所指向的这一行”服务“, 而这行包含了众多属性。

    我不知我的理解是否正确 ,请大家指正

    2020年12月6日 0:16

全部回复

  • 您好:

    您的理解是正确的。在PowerShell中,对象通过管道符“|”在命令之间传递,$_就是用于自动地表示当前被传递到Where-Object中的对象。在您给出的这条命令中,Get-Service输出的结果(具体类型为System.ServiceProcess.ServiceController的对象)经过管道被传递到Where-Object,那么当前的$_就是类型为System.ServiceProcess.ServiceController的对象,而$_.status就是System.ServiceProcess.ServiceController对象的Status属性。之后Where-Object筛选出其中Status属性值为Running的对象,通过管道传递至下一个命令Fotmat-Table。

    如您还有其他疑问,请随时与我们联系。

    如果回答是有帮助的, 请将其标记为答案, 可以帮助其他有相同问题的社区成员, 并快速找到有用的答复。

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    • 已编辑 Ian Xue 2020年12月7日 6:31
    2020年12月7日 6:31
  • 您好:

    请问上述回复是否能够解决您的问题?

    如您还有其他疑问,请随时与我们联系。 如果回答是有帮助的, 请将其标记为答案, 可以帮助其他有相同问题的社区成员, 并快速找到有用的答复。

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    2020年12月9日 5:37