即使文件夹存在,Powershell Copy-Item 也不复制

时间:2021-06-04 14:25:18

标签: powershell copy-item

我连续两次调用 Copy-Item,但第二次没有复制文件。两者都将相同的文件复制到两个不同的文件夹中。两个文件夹都存在。但第二个永远不会复制。我试着注释掉第一个,但第二个仍然没有复制。

$deliveryFolder = "C:\Users\administrator.GTCS\Desktop\Delivery\1.5.6.1140\"    
$localFolder = "C:\WebServerGateway\"    
$fileSharingServerManifestFileName = "GTCS_GCS_FileSharingServer_Manifest.xml"

Copy-item -Path $localFolder$fileSharingServerManifestFileName -Destination $deliveryFolder"GcsData\Configurations\Platforms\DEV\Web Server Gateway" -Force

Copy-item -Path $localFolder$fileSharingServerManifestFileName -Destination $deliveryFolder"GcsData\Configurations\Platforms\INT\Web Server Gateway" -Force

1 个答案:

答案 0 :(得分:4)

如果要以这种方式组合字符串,则需要将它们用双引号括起来,以扩展变量:

$deliveryFolder = "C:\Users\administrator.GTCS\Desktop\Delivery\1.5.6.1140\"    
$localFolder = "C:\WebServerGateway\"    
$fileSharingServerManifestFileName = "GTCS_GCS_FileSharingServer_Manifest.xml"

    Copy-item -Path "$localFolder$fileSharingServerManifestFileName" -Destination "$($deliveryFolder)GcsData\Configurations\Platforms\DEV\Web Server Gateway" -Force
    
    Copy-item -Path "$localFolder$fileSharingServerManifestFileName" -Destination "$($deliveryFolder)GcsData\Configurations\Platforms\INT\Web Server Gateway" -Force

注意我在 $() 参数中使用了子表达式 -Destination。因为在您的情况下,解析器可能无法确定变量名的结尾位置,因此字符串可能无法正确扩展。

也就是说,这两个参数都不是特别漂亮/可读,所以我建议不要使用这种语法。连接或更好地使用 Join-Path 导出参数是更好的选择:

$Path = $localFolder + $fileSharingServerManifestFileName
$Dest = $deliveryFolder + "GcsData\Configurations\Platforms\INT\Web Server Gateway"

注意:串联迫使您注意用反斜杠分隔 -Parent/-Child 参数在 Join-Path

或者:

$Path = Join-Path $localFolder $fileSharingServerManifestFileName
$Dest = Join-Path $deliveryFolder "GcsData\Configurations\Platforms\INT\Web Server Gateway"

然后简单地修改命令:

Copy-item -Path $Path -Destination $Dest -Force
Copy-item -Path $Path -Destination $Dest -Force