Como movo, renomeio arquivos com mais eficiência e registro essa ação?

Eu tenho a seguinte lista CSV (na realidade, milhares de linhas):

needle,code
123456,AB
121212,BB
33333333,CVV

E eu tenho um diretório (C:\old_files) contendo arquivos PDF (novamente, milhares na realidade):

dsadsadsa.343222.dsads23213jkjl.saddsa.pdf
dsadsadsa.123456.dsads23213jkjl.saddsa.pdf
dsadsadsa.111111.dsads23213jkjl.saddsa.pdf
dsadsadsa.33333333.dsads23213jkjl.saddsa.pdf
dsadsadsa.33333333.fsdgdsfdsfdsf.dsad.pdf

Para cada agulha no CSV:

Eu tenho que ver se existe um PDF contendo essa agulha (pode haver 0 ou mais correspondências)Se houver uma correspondência, eu tenho quefaça uma cópia do arquivo em uma pasta separada (D:\new_files)renomeie o arquivo copiado, acrescentando o respectivo código ao nomeescreva uma entrada no log.

Por exemplo, eu tenho uma correspondência para123456 e 2 para33333333, então eu tenho que mover uma cópia desses arquivos paraD:\new_files e renomeie-os para:

AB.dsadsadsa.123456.dsads23213jkjl.saddsa.pdf
CVV.dsadsadsa.33333333.dsads23213jkjl.saddsa.pdf
CVV.dsadsadsa.33333333.fsdgdsfdsfdsf.dsad.pdf

O arquivo de log ficaria assim (formatoneedle,code,oldfilepath,newfilepath):

123456,AB,C:\old_files\dsadsadsa.123456.dsads23213jkjl.saddsa.pdf,D:\new_files\AB.dsadsadsa.123456.dsads23213jkjl.saddsa.pdf
33333333,CVV,C:\old_files\dsadsadsa.33333333.dsads23213jkjl.saddsa.pdf,D:\new_files\CVV.dsadsadsa.33333333.dsads23213jkjl.saddsa.pdf
33333333,CVV,C:\old_files\dsadsadsa.33333333.fsdgdsfdsfdsf.dsad.pdf,D:\new_files\CVV.dsadsadsa.33333333.fsdgdsfdsfdsf.dsad.pdf

É importante que eu faça um loop sobre os arquivos no diretório apenas uma vez, porque iteramos em todos os arquivos em um diretório.ForEach loop para cadaneedle leva muito tempo. Então, graças a este fórum, estou construindo uma hashtable primeiro:

$pairs = @{}
Import-CSV .\data.csv | ForEach-Object { $pairs[$_.needle] = $_.code+"." }

Get-ChildItem "C:\old_files" | Rename-Item -NewName { "D:\new_files\" + $pairs[$_.Name.Split('.')[1]] + $_.Name }

Meu primeiro problema aqui: não consigo mover o arquivo para a nova pasta.

Q1 Como copiar corretamente um arquivo deC:\old_files para dentroD:\new_files e renomeá-lo?

Meu segundo problema: não entendo como posso adicionar código ao código acima.

Q2 Como posso criar o arquivo de log para cada correspondência (e, portanto, arquivo copiado e renomeado)?

questionAnswers(1)

yourAnswerToTheQuestion