Powershell 需要脚本将生成输出发布到临时服务器

Powershell 需要脚本将生成输出发布到临时服务器,powershell,powershell-2.0,Powershell,Powershell 2.0,我正在尝试编写一个PowerShell脚本,该脚本将从源文件夹复制文件子集并将其放入目标文件夹。我已经玩了半天的“复制项目”和“删除项目”,无法得到想要的或一致的结果 例如,当我多次运行以下cmdlet时,文件最终位于不同的位置: copy-item -Path $sourcePath -Destination $destinationPath -Include *.dll -Container -Force -Recurse 我一直在尝试我能想到的所有选项和命令的组合,但找不到正确的解决方案

我正在尝试编写一个PowerShell脚本,该脚本将从源文件夹复制文件子集并将其放入目标文件夹。我已经玩了半天的“复制项目”和“删除项目”,无法得到想要的或一致的结果

例如,当我多次运行以下cmdlet时,文件最终位于不同的位置:

copy-item -Path $sourcePath -Destination $destinationPath -Include *.dll -Container -Force -Recurse
我一直在尝试我能想到的所有选项和命令的组合,但找不到正确的解决方案。因为我确信我没有做任何非典型的事情,我希望有人能减轻我的痛苦,并为我提供正确的语法来使用

源文件夹将包含大量具有各种扩展名的文件。例如,以下所有情况都是可能的:

  • .dll
  • .dll.config
  • .exe
  • .exe.config
  • .LastCodeAnalysisIssucceed
  • .pdb
  • .Test.dll
  • .vshost.exe
  • .xml
  • 等等
脚本只需复制.exe、.dll和.exe.config文件,不包括任何.test.dll和.vshost.exe文件。如果目标文件夹不存在,我还需要脚本来创建它们


非常感谢您对我的帮助。

只要文件位于一个目录中,以下内容就可以正常工作。它可能比需要的要详细一点,但它应该是一个很好的起点

$sourcePath = "c:\sourcePath"
$destPath = "c:\destPath"

$items = Get-ChildItem $sourcePath | Where-Object {($_.FullName -like "*.exe") -or ($_.FullName -like "*.exe.config") -or ($_.FullName -like "*.dll")}

$items | % {
    Copy-Item $_.Fullname ($_.FullName.Replace($sourcePath,$destPath))
}
尝试:


你的问题在这里有答案吗?不,当我使用接受的答案时,我得到一个DirectoryNotFound错误。错误中显示的路径是“连接”的目标路径。(注意:路径不存在。我需要脚本来执行此操作。)@SonOfPirate您需要先创建缺少的文件夹,然后再复制到其中。在我的答案中尝试代码。在目标路径上发现DirectoryNotFound错误。正如我所说,如果目标文件夹不存在,我需要脚本来创建它们。很抱歉,耽搁了,我终于有机会回到这个话题上来了。它非常适合我的需要!谢谢!
$source = "C:\a\*"
$dest =  "C:\b"

dir $source -include *.exe,*.dll,*.exe.config -exclude *.test.dll,*.vshost.exe  -Recurse | 
% {

 $sp = $_.fullName.replace($sourcePath.replace('\*',''), $destPath)

 if (!(Test-Path -path (split-path $sp)))
    {
     New-Item (split-path $sp) -Type Directory
    } 

    copy-item $_.fullname  $sp -force
  }