我连续两次调用 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
答案 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