在一个项目上工作,我需要替换一个
path prefix
'前缀不同。自动复制文件,然后我将在本地使用这些文件。我想我应该在复制完成后重新使用我不需要的旧变量,而不是创建新的变量。在数组中循环时执行替换时遇到问题。我能够为这个特定的场景找到一个解决方案,但是我想知道为什么我的循环不起作用
没有错误显示给我一个指示,为什么它不工作。
任何关于理解为什么循环时替换不起作用的帮助都是有帮助的
[string]$Root_Path = "\\Main_Blah_Path\"
[string]$Software = $Root_Path + "Software\"
[string]$Adobe_Reader = $Software + "Adobe_Reader\"
[string]$Firefox = $Software + "Firefox\"
[string]$Google_Chrome = $Software + "Google_Chrome\"
[System.Collections.ArrayList]$List_Of_Software = @(
$Adobe_Reader
$Firefox
$Google_Chrome
)
我做替换的方法的例子。它们工作并将所需的输出写入控制台
foreach ($Path in $List_Of_Software) {
$Path -replace '\\\\Main_Blah_Path\\','C:\Folder\'
}
$List_Of_Software | ForEach-Object {$_ -replace '\\\\Main_Blah_Path\\','C:\Folder\'}
我失败的例子。我无法替换数据并将其保存到自身中以进行替换。我找不到
.replace
foreach ($Path in $List_Of_Software) {
$Path = $Path -replace '\\\\Main_Blah_Path\\','C:\Folder\'
}
$List_Of_Software | ForEach-Object {$_ = $_ -replace '\\\\Main_Blah_Path\\','C:\Folder\'}
foreach ($Path in $List_Of_Software) {
$Path.Replace('\\\\Main_Blah_Path\\','C:\Folder\')
}
解决方案,我用我目前的情况下,但我可以预见一些事情在我的未来,这种方法可能不是一个可行的选择
$List_Of_Software = $List_Of_Software -replace '\\\\Main_Blah_Path\\','C:\Folder\'