【问题标题】:Create folder remotely and Copy files远程创建文件夹并复制文件
【发布时间】:2020-02-20 20:00:35
【问题描述】:

我正在尝试使用 Azure Pipeline 中的 "powershell on target machine" 任务创建一个文件夹(如果它在服务器上不存在),然后将文件复制到从共享位置到创建的新文件夹。以下是我正在使用的 powershell 脚本:

    $DeployDB = "\\$(ServerName)\DeployDB"

     if(Test-Path $DeployDB){
         Write-Host "Path Exists!!"
     }else{
        New-Item "c:\DeployDB" -ItemType Directory
        New-SmbShare -Name DeployDB -Path C:\DeployDB | Grant-SmbShareAccess -AccountName Everyone -AccessRight Full -Force

    $acl = Get-Acl "c:\DeployDB"
    $AccessRule1 = New-Object System.Security.AccessControl.FileSystemAccessRule("Everyone","FullControl","Allow")
    $acl.SetAccessRule($AccessRule1)
    Set-Acl "c:\DeployDB" $acl 
}
Copy-Item -Path \\MyServer\Data\** -Destination c:\DeployDB -Recurse -Force -verbose

$ServerName 在构建队列时作为输入发送。

以上脚本成功创建文件并以正确的权限共享该文件,但由于某种原因,它不会将文件从共享位置复制到创建的新文件夹。如果我直接从 powershell 单独运行相同的复制命令,它可以正常工作。奇怪的是,当步骤完成时没有错误。任何见解将不胜感激。

谢谢!

【问题讨论】:

  • 30 秒后,您的第一行在 $() 中缺少一个 $。您的线路应为 $DeployDB = "\\$ServerName\DeployDB"$DeployDB = "\\$($ServerName)\DeployDB"

标签: powershell azure-devops azure-pipelines


【解决方案1】:

您可以通过为源文件夹和目标文件夹添加新变量来检查线程 Azure DevOps Pipeline - Power shell script , Copy Files using Variables 中的解决方案:

Copy-Item $($sourcefolder) -Destination $($destination)

或者您可以添加Windows Machine File Copy task 来复制文件。

【讨论】:

  • 出于某种原因使用了“Windows 机器文件复制任务”,该复制项根本无法工作。谢谢
猜你喜欢
  • 1970-01-01
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多