Assuming the files are directly unde $ src_dir, you can make this a little easier, i.e. copy can be single line:
$file_list | Copy-Item -Path {Join-Path $src_dir $_} -Dest $dst_dir -ea 0 -Whatif
-ea is an alias for the -ErrorAction parameter, and a value of 0 corresponds to SilentlyContinue. This causes the Copy-Item instance to ignore errors you might get if one of the source files did not exist. However, if you encounter problems, temporarily remove this option so that you can see error messages.
When entering this material interactively, I usually use shortcuts similar to this, but in scripts it is better to indicate its readability. Also note that the -Path parameter can accept a script block, i.e. script in braces. Technically, the Copy-Item cmdlet never sees a script block, but only the results of its execution. This works in the general case for any parameter that accepts an input channel. Remove -WhatIf so that the command actually executes.
source share