【问题标题】:Delete files from remote server using TFS build/release definition使用 TFS 构建/发布定义从远程服务器删除文件
【发布时间】:2019-01-27 00:37:58
【问题描述】:

我正在使用 TFS v2015 将 Web 应用程序部署到远程服务器。由于我们项目的结构方式(作为网站项目),构建最终会为每个 .cs 创建一个单独的 DLL。 DLL 文件的名称是随机的,并且在每次部署时都会更改。这导致 bin 文件夹中有 25,000 多个文件,其名称类似于“App_Web_0bbazvic.dll”。

我想做的是,在将文件复制到目标机器之前,从远程bin目录中删除所有匹配模式“/bin/app_code_*.dll”的文件。

我曾考虑使用启用了“清理目标”选项的“机器文件复制”,但我不想删除整个目录。如果需要,我可以更详细地解释我的原因。

我也在考虑“目标机器上的 Power Shell”任务。任何建议,将不胜感激。此外,远程服务器与构建代理不在同一个域中。

【问题讨论】:

    标签: powershell tfs tfsbuild


    【解决方案1】:

    如果您能够使用 WinRM,您可以添加类似这样的内容作为内联脚本。

    Get-ChildItem -Path C:\Path\To\Files -recurse -include app_code_*.dll | Remove-item
    

    https://docs.microsoft.com/en-us/vsts/pipelines/tasks/deploy/powershell-on-target-machines?view=vsts

    【讨论】:

      【解决方案2】:

      您可以使用简单的Delete Task 执行此操作,甚至无需使用 PowerShell,假设您的文件位于代理运行的相同位置。

      这样

      要删除远程路径中的文件,您可以使用Remote delete task

      像这样

      【讨论】:

      • 这绝对是我要从中删除的远程计算机。我尝试使用您上面提到的第 3 方插件,但收到错误“WinRM 客户端无法处理请求。在以下情况下,默认身份验证可能与 IP 地址一起使用:传输为 HTTPS 或目标位于 TrustedHosts 列表中, 并提供显式凭据。使用 winrm.cmd 配置 TrustedHosts .....”我对 WinRM 不熟悉。如果目标和代理不在同一个域中可以使用吗?
      • @MikeH 关注this 解决方案,这可能有助于您配置winRM
      猜你喜欢
      • 2018-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 1970-01-01
      • 2019-01-20
      相关资源
      最近更新 更多