【发布时间】: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