Azure Devops-PS脚本

时间:2020-04-24 13:30:25

标签: powershell azure-devops

我试图通过Azure devops Pipeline在PS Inline脚本下运行。但是IAM在代理日志上出现错误 管道代码:

trigger:

master
pool:
name: 'Dev1'

steps:

task: PowerShell@2
inputs:
targetType: 'inline'
script: |
    # Write your PowerShell commands here.

    New-Item -Path "C:\Manoj" -Force

代理错误:

Starting: PowerShell
Task : PowerShell
Description : Run a PowerShell script on Linux, macOS, or Windows
Version : 2.165.0
Author : Microsoft Corporation
Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/powershell
Generating script.
========================== Starting Command Output ===========================
"C:\windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ". 'C:\tmp\vsts-agent-win-x64-2.165.2_work_temp\65dd1488-c132-4b9a-8403-0604d37f43a4.ps1'"
New-Item : Access to the path 'C:\Manoj' is denied.
At C:\tmp\vsts-agent-win-x64-2.165.2_work_temp\65dd1488-c132-4b9a-8403-0604d37f43a4.ps1:4 char:1

New-Item -Path "C:\Manoj" -Force
  + CategoryInfo          : PermissionDenied: (C:\Manoj:String) [New-Item], UnauthorizedAccessException
  + FullyQualifiedErrorId : NewItemUnauthorizedAccessError,Microsoft.PowerShell.Commands.NewItemCommand

##[error]PowerShell exited with code '1'.
Finishing: PowerShell

3 个答案:

答案 0 :(得分:0)

使用Microsoft托管代理,该代码对我有用。

trigger:
  branches:
    include:
      - '*'

pool:
  vmImage: 'windows-latest'

steps:
- task: PowerShell@2
  inputs:
    targetType: inline
    script: |
        New-Item -Path "C:\Manoj" -Force

如果您使用的是自托管代理,请验证运行azure devops服务的用户帐户是否满足您的权限要求。

答案 1 :(得分:0)

该错误表明运行azdo代理的帐户无权在系统驱动器的根目录中创建对象。由于代理应该在多用户/多项目场景中使用,因此这种限制听起来合乎逻辑。

因此,请考虑构建仅在工作目录内作用域的管道逻辑。 例如:Pipeline.Workspace

trigger:
  master

pool:
  name: 'Dev1'

steps:
- task: PowerShell@2
  inputs:
    targetType: inline
    script: |
        New-Item -Path "$(Pipeline.Workspace)\Manoj" -Force

在这种情况下,不同管道的工件相互隔离。

参考:Use predefined variables

答案 2 :(得分:0)

如果您使用的是自托管代理,请尝试为代理服务用户添加管理员(或至少是磁盘写作者)特权,或允许其为该文件夹写入。