$injectpoint = %{ [Regex]::Matches($file, "DMG>D8>$dob.+?REF>EA>$mrn") } | %{ $_.Value }
foreach ($data in $injectpoint)
{
$file = Get-Content C:\utils\foo\0000000.txt
inject $file $eth $race $lang $data $dob
}
}
}
function inject($file, $eth, $race, $lang, $injectpoint, $dob)
{
Set-Location C:\utils\boo\
$injector = "$race" + ":" + $eth + ":" + $lang
$newString = $data -replace "DMG>D8>$dob", "DMG>D8>$dob>$injector"
$file.Replace($data, $newString) | Set-Content C:\utils\foo\testfile.txt
}
Mi proceso de pensamiento es que debido a que mi bucle vuelve a leer el archivo en la memoria al comienzo del bucle, tendrá los nuevos cambios leídos en la memoria, donde luego podrá establecer nuevo contenido sin eliminar los cambios que hizo mi bucle en su memoria. iteración previa
He intentado cambiar el lugar donde se lee el archivo en la memoria (fuera del bucle, dentro de la función de inyección), pero la iteración actual es lo más lejos que pude ver donde puedo ver la última inyección de mi script, todos los demás se sobrescriben.
2 respuestas
El problema aquí es durante la iteración de tu ciclo, estás leyendo el archivo 0000000.txt
y guardando los cambios en testfile.txt
. Como nunca lees testfile.txt
después de los reemplazos de cadena, no ves las cadenas actualizadas.
Si lo entiendo bien, desea agregar nuevo contenido al archivo C:\utils\foo\testfile.txt , para esto debe usar el cmdlet Add-Content
Nuevas preguntas
powershell
PowerShell es una línea de comandos multiplataforma y una utilidad de secuencias de comandos de Microsoft. Use esta etiqueta para preguntas sobre cómo escribir y ejecutar scripts de PowerShell SOLAMENTE. Las preguntas de programación específicas de la versión multiplataforma PowerShell Core (Windows, macOS y Linux) deben etiquetarse [powershell-core]. Se deben hacer preguntas sobre la administración del sistema en Super User o Server Fault.