Для добавления нового содержимого OU в новый файл вы можете использовать Add-Content
:
$OU | Add-Content "ouNamesAdded.txt"
Для удаления контента я бы просто сделал это после того, как вы закончите цикл. Вы можете удалить параметр -whatif
, если вы довольны командой.
Compare-Object -ReferenceObject (Get-Content ouNames.txt) -DifferenceObject (Get-Content ouNamesAdded.txt) -PassThru | Set-Content ouNames.txt -whatif
Я не знаю ничего, что могло бы просто удалить строку из файла. Если вы хотите удалять OU из файла после каждой итерации, вам нужно будет сделать что-то вроде следующего:
# Execute within the if statement
Get-Content ouNames.txt -notmatch "^$OU$" | Set-Content ouNames.txt
# Or using the $OUNames array (more efficient)
$OUnames -notmatch "^$OU$" | Set-Content ouNames.txt
Если вы хотите отслеживать список и делать удаления в реальном времени, я бы использовал что-то вроде arraylist:
# Run this before the loop code
$OUs = $OUnames.clone() -as [system.collections.arraylist]
# Run this within the if statement
$OUs.Remove($OU)
# After the loop completes, then write to the output file
$OUs | Set-Content "ouNamesAdded.txt"