代码之家  ›  专栏  ›  技术社区  ›  SteveC

如何重置Azure DevOps输入变量的值?

  •  0
  • SteveC  · 技术社区  · 6 年前

    如何重置Azure DevOps的值 Get-VstsInput 变量?

    我正在本地从自定义任务运行PowerShell脚本,以检查它是否按预期工作…

    Invoke-VstsTaskScript -ScriptBlock { . ..\buildAndReleaseTask\main.ps1 }
    

    第一次运行脚本时,我得到了各种值的提示。脚本使用sdk函数获取输入 Get-VstsInput .

    但在随后的脚本运行中,已经设置了值。 但是,我在文档中看不到有关如何重置值的任何指示。

    代码从获取所需的值开始,用户已在Azure DevOps管道对话框中填写了这些值…

    $serverName= Get-VstsInput -Name "serverName" -Require
    

    我已经检查了环境变量,但是没有。

    我找到的唯一解决方案是关闭PowerShell控制台。

    1 回复  |  直到 6 年前
        1
  •  2
  •   SteveC    6 年前

    来自文档:

    为了方便交互测试,模块会提示未定义的任务变量和输入。例如,如果未定义任务变量,get vststaskinput-name somevariable将提示输入值。如果输入了一个值,那么它将被存储,以便后续调用返回相同的值。任务变量存储为环境变量。 输入和端点存储在vststasksdk模块内部,可以通过删除和重新导入模块来清除。

    如此呼唤 Remove-Module VstsTaskSdk 应该有技巧。

    我倾向于通过环境变量设置变量和输入,而不是依赖交互模式,这使得它们更容易更改,并且在节点和PowerShell处理程序之间工作相同:

    # Task variable 'Build.SourcesDirectory':
    $env:BUILD_SOURCESDIRECTORY = [...]
    
    # Input 'MyInput':
    $env:INPUT_MYINPUT = [...]
    
    # Endpoint:
    $env:INPUT_MYENDPOINT = 'EP1'
    $env:ENDPOINT_URL_EP1 = 'https://[...]'
    $env:ENDPOINT_AUTH_EP1 = '{ "Parameters": { "UserName": "Some user", "Password": "Some password" }, "Scheme": "Some scheme" }'
    $env:ENDPOINT_DATA_EP1 = '{ "Key1": "Value1", "Key2": "Value2" }'
    

    另请参见: