Powershell v2提示在foreach的价值

此代码在PowerShell v1中运行,但不在PowerShell v2中运行。 现在它提示一个值:

在这里输入图像描述

Get-ChildItem -Path $source -Filter "*.journal" | Where-Object { $_.Name -match 'SoundPC\[\d{1,12}-\d{1,12}\].journal' } | Sort-Object -Property CreationTime | ForEach-Object { $sourcefile = $_.Name } 

有人可以帮忙吗?

左括号必须与foreach命令位于同一行,目前它的新行:

 Foreach-Object {... 

正如Shay Levy指出的,大括号必须与ForEach-Object命令位于同一行。

 ... | ForEach-Object { $sourcefile = $_.Name } 

另外,你也可以在行尾使用反引号来产生一个延续,然后你可以把下一行的大括号。 作为一名C#开发人员,我更喜欢这样,这样我的大括号就可以排队了。

 ... | ForEach-Object ` { $sourcefile = $_.Name }