Работаю над проектом, и мне нужно заменить '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\'