我是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"
。
感谢您的帮助!
答案 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的创建并打印内容。