Powershell不复制文件而不抛出异常

时间:2014-01-24 16:19:28

标签: powershell

我不明白发生了什么。

我正在尝试从一个目录和另一个目录中复制和粘贴dll。

gci -path $FromPath -Include ("*.dll", "*.pdp") | ? {$_.Name -match "appMaskA|appMaskB|appMaskC"} | foreach{Copy-item $_.Fullname -destination $ToPath -force}

现在该命令适用于我所拥有的一个功能,但不适用于此功能......

现在,此命令正在将dll移动到其他服务器。不确定为什么它不起作用。

如果它不起作用,它应该抛出异常。顺便说一句,我确实在try catch中包装了那个命令?我应该抓住一个特定的例外吗?

3 个答案:

答案 0 :(得分:1)

你的$ ToPath是什么样的?如果您的代码包含在try / catch中,请将 -ErrorAction Stop 参数添加到复制语句中,因为默认值将继续,因此将永远不会执行catch块。

gci -path $FromPath -Include ("*.dll", "*.pdp") | ? {$_.Name -match "appMaskA|appMaskB|appMaskC"} | foreach{Copy-item $_.Fullname -destination $ToPath -force -ErrorAction Stop}

答案 1 :(得分:0)

这需要是Powershell还是您可以通过BASH / CLI脚本使用XCOPY。使用XCOPY,您可以通过

访问C Drive
  

SERVER.DOMAIN.LOCAL / C $ /路径/到/ DLL

答案 2 :(得分:0)

也许这适合你:

  

gci -path $ FromPath -Include * .dll,*。pdp |其中{$ _。名称-match“appMaskA | appMaskB | appMaskC”} | Copy-item -path $ _ -destination $ ToPath -force

对于复杂和/或大型复印作业,我会使用程序robocopy。 Robocopy是Windows的一部分。执行此命令以验证其位置:

  

Get-Command robocopy |选择路径