您尝试的代码应该复制文件(只要name
属性是文件的名称)并按照c:\
您的需要保存。您可能希望使用Join-Path
组合目录和文件名而不是当前方法。它确保您没有多个\
等。例如:
ForEach-Object {Copy-Item -LiteralPath (Join-Path $_.Directory $_.name) -Destination c:\}
使用文件夹结构复制(未经测试):
function MoveTo-NewServer {
param(
[Parameter(Mandatory=$true)]
$Csvpath,
[Parameter(Mandatory=$true)]
$Newserver)
if(Test-Path $Csvpath -PathType Leaf) {
Import-Csv $Csvpath | ForEach-Object {
$h = ([uri]$_.directory).Host
$src = Join-Path $_.Directory $_.name
$dest = $src.Replace($h, $Newserver)
if(!(Test-Path $dest)) { New-Item $dest -ItemType File -Force }
Copy-Item -LiteralPath $src -Destination $dest -Force
}
}
}
如前所述,这是未经测试的。尝试像这样使用它:
MoveTo-NewServer -Csvpath "c:\mycsv.csv" -Newserver "server2"