内联初始化数组的迭代?

时间:2014-09-30 22:52:58

标签: powershell

我是PowerShell的新手,并且在尝试做一些相当简单的事情时,偶然发现了一些我无法解释的行为。我有一些变量包含文件系统中的路径,我想确保它们都有尾部斜杠(如果它们缺失则添加它们)。

# append trailing slash if not present
$engineXCopyPath, $engineXBackupPath, $enlistmentBuildTargetPath | ForEach-Object
{
    Write-Host "hi" #where I would check the last character and add a \ if it weren't
}

运行我的脚本时,此代码会一直提示Process[_n_],直到我没有输入为止,在这种情况下,它会打印行的全部内容而不是执行它。

据我所知,它应该迭代输入它的三个项目,打印" hi"每一个人。我不确定为什么它会提示任何输入(更不用说为什么它在我给它空白输入时停止),我也不知道它为什么要打印"Write-Host "hi" #where I would check the last character and add a \ if it weren't"而不是只是"hi"

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您需要在与ForEach-Object相同的行中包含左括号:

$engineXCopyPath, $engineXBackupPath, $enlistmentBuildTargetPath | ForEach-Object {
    Write-Host "hi" #where I would check the last character and add a \ if it weren't
}

否则,PowerShell会提示您输入Process所需的ForEach-Object输入脚本块。然后它将大括号解释为ScriptBlock的创建并打印内容。