Powershell:ForEach对象的替换顺序

Powershell:ForEach对象的替换顺序,powershell,powershell-4.0,powershell-ise,Powershell,Powershell 4.0,Powershell Ise,我正在Powershell中查找/替换单词。我对更换的顺序很好奇 希望它顺序地用Test2替换Test1,然后用Test3替换Test2的某些字符串组合(见下文) (一) 只是好奇下面写代码是否安全?还是Powershell同时运行,从而打破了我所需的序列替换模式 这似乎是工作,只是想100%肯定。否则,在第一次替换完成后,我可以编写另一个foreach循环 (二) 另外,我是否需要下面的管道分隔符?不知道他们在做什么,从以前的程序员那里继承了这个脚本,尝试谷歌和研究powershell #Re

我正在Powershell中查找/替换单词。我对更换的顺序很好奇

希望它顺序地用Test2替换Test1,然后用Test3替换Test2的某些字符串组合(见下文)

(一) 只是好奇下面写代码是否安全?还是Powershell同时运行,从而打破了我所需的序列替换模式

这似乎是工作,只是想100%肯定。否则,在第一次替换完成后,我可以编写另一个foreach循环

(二) 另外,我是否需要下面的管道分隔符?不知道他们在做什么,从以前的程序员那里继承了这个脚本,尝试谷歌和研究powershell

#Replace words in file
$TestFiles = Get-ChildItem $DBContextDestination   *.cs -rec
foreach ($file in $TestFiles )
{
    (Get-Content $file.PSPath) |
    Foreach-Object { $_ -replace "abcd", "1234" } |
    Foreach-Object { $_ -replace "Test1;", "Test2" } |
    Foreach-Object { $_ -replace "Class Test2 Object", "Class Test3 Object" } |
    Set-Content -Encoding UTF8  $file.PSPath
}

是的,与unix中的管道不同,没有任何东西在后台运行。如果发送了一个对象,它将按顺序从左向右通过管道。您还可以链接替换。Test1后面应该有分号吗

(Get-Content $file.PSPath) -replace "abcd", "1234" -replace "Test1;", 
  "Test2" -replace "Class Test2 Object", "Class Test3 Object"

对于每个单独的输入项,管道中的命令将按顺序执行,即在通过第二个等等之前,任何输入字符串都不会到达第三个
ForEach对象
块hi@MathiasR.Jessen谢谢,请随意回答,我可以发送点,我是否还需要最后的|管道分隔符?这确保了顺序吗?它们不是真正的“分隔符”,但是是的,您确实需要
才能将它们“绑定”在一起。我关闭它的副本的答案解释了管道是如何工作的。嗨,你也能回答上面的第二个问题吗,谢谢你的方式很好。好的,那么我会保留管道分隔符吗?它似乎保持顺序是的。。。。。。。。。。。。