我正在构建一个正在构建的Azure Devops部署管道设置,并且可以毫无问题地部署到自托管虚拟机。
我有以下powershell脚本,可以正确清除目标目录,并留下2个不属于源代码管理的文件夹
Get-ChildItem -Path 'C:\inetpub\wwwroot\testDeploy\' -Recurse -exclude "pod","photos" |
Select -ExpandProperty FullName |
Where {$_ -notlike '*\pod\*' -and $_ -notlike '*\photos\*'} |
sort length -Descending |
Remove-Item -force
我尝试添加“ PowerShell脚本”任务,但我不知道如何将PowerShell脚本放入该任务可以访问的文件夹,即$(System.DefaultWorkingDirectory)。谁能建议我应该如何生成文件或将其存储在我的存储库中,然后由自托管的Windows代理进行访问
答案 0 :(得分:1)
同意Shayki,您可以在仓库中创建一个powershell( .ps1 )文件,然后将脚本粘贴到其中。然后,使用powershell任务执行ps1文件中的脚本。
但是,正如您所说的,您希望可以轻松地将其维护在存储库中。需要对脚本进行一些更改:
Param(
[string]$RootPath,
[string]$File1,
[string]$File2,
[string]$NonLike1,
[string]$NonLike2
)
Get-ChildItem -Path $RootPath -Recurse -include $File1,$File2 |
Select -ExpandProperty FullName |
Where {$_ -notlike $NonLike1 -and $_ -notlike $NonLike2} |
sort length -Descending |
Remove-Item -Recurse -force
第一个更改是,您需要用变量替换硬代码。通过task传递值,这是维护脚本的好方法。
第二个也是重要变化的地方是在-Recurse
之后添加Remove-Item
,否则当$ RootPath的值是硬代码,例如'C:\ Users \ '。
Remove-Item:Windows PowerShell处于非交互模式。阅读和 提示功能不可用。
然后,您可以在构建管道中添加任务。在 .ps1 文件所在的位置添加Script path
,然后输入带有以下值的参数:
如果您要访问$(System.DefaultWorkingDirectory)
,请将其传递给$RootPath
。
希望我的样本可以帮助您实现所需的目标。