0
我是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_]
,直到我给它没有输入,在这种情况下,打印行的全部内容,而不是执行它。
据我所知,它应该迭代到三个项目喂给它,打印“嗨”每一个。我不确定为什么它会提示输入任何内容(更不用说为什么它会停止输入),也不知道它为什么要打印"Write-Host "hi" #where I would check the last character and add a \ if it weren't"
而不是仅打印"hi"
。
感谢您的帮助!
噢,伙计。我是一个“下一线支架”有点儿。谢谢。 – Benjin 2014-10-01 00:11:18
@Benjin - 为了澄清,Foreach-Object是一个Cmdlet。您传入的脚本块只是一个位置参数。您无法在下一行继续执行命令的参数。一个使用命名参数的例子:'1,2,3 | Foreach-Object -begin {$ x = 2} -Process {$ x * $ _}'。 Foreach(){}是一个关键字。为此,您可以在下一行开始卷曲。 – 2014-10-01 00:53:44
我想我明白了。因此,通过在同一行上启动开放大括号,Cmdlet知道我传递了一个参数,并且知道该参数将继续,直到它碰到适当的大括号? – Benjin 2014-10-01 18:38:29