PowerShell:“... $ {_。Name} ......”出了什么问题?

时间:2013-10-26 09:14:28

标签: string powershell concatenation

为什么我不能在文本中使用$ _,因为可以使用其他变量?

    Get-ChildItem -Path $path -filter *.mp3 | foreach { 
        $count++;
        write-host "File${count}=${_.Name}"; 
    }

我知道我可以这样写:

    Get-ChildItem -Path $path -filter *.mp3 | foreach { 
        $count++;
        write-host "File${count}=$($_.Name)"; 
    }

1 个答案:

答案 0 :(得分:4)

当你写${_.Name}时,你实际上是在询问名为_.Name的变量,而不是Name变量的$_属性。

PS > ${_.Name} = "test"
PS > Get-Variable _*

Name                           Value
----                           -----
_.Name                         test  

$($_.Name)的作用原因是因为$()表示“先处理”,所以您可以在里面指定任何内容。在这种情况下,您只需指定一个变量名称和您想要的属性,但您也可以使它更复杂,如:

PS > $a = 1
PS > "A's value is 1(true or false?): $(if($a -eq 1) { "This is TRUE!" } else { "This is FALSE!" })"

A's value is 1(true or false?): This is TRUE!

PS > $a = 2
PS > "A's value is 1(true or false?): $(if($a -eq 1) { "This is TRUE!" } else { "This is FALSE!" })"

A's value is 1(true or false?): This is FALSE!