If you have a CSV containing two columns, oldfilepath and newfilename, then you can use the following.
Import-Csv C:\test.csv | % { Copy-Item -Path $_.oldfilepath -Destination "C:\TEST\$($_.newfilename)" }
Notice how the $_.newfilename
is encapsulated inside a $()
. That’s because $_.newfilename
is an expression (since we are getting a property out of the variable), and not a variable. $()
tells PowerShell to solve the expression before using it in the string. If we don’t use it, it would have used the whole csv-object for that row($_
) as a string and returned an error.