首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何让任务设置可在配置中使用的变量?

如何让任务设置可在配置中使用的变量?
EN

Stack Overflow用户
提问于 2018-07-13 11:12:05
回答 1查看 1.2K关注 0票数 7

在VS代码中,我定义了一个任务:

代码语言:javascript
复制
"tasks": [
    {
        "label": "getcredentials",
        "type": "shell",            
        "command": ".\\TestScripts\\GetCredentials.ps1"
    }
]

GetCredentials.ps1创建凭据并将其分配给$Global:credential。

在launch.json中,我想使用$Global:credential作为我正在调试的实际脚本的参数:

代码语言:javascript
复制
    "configurations": [
        {
            "type": "PowerShell",
            "request": "launch",
            "name": "Exchange Parameter Set, No Inactive",
            "preLaunchTask": "getcredentials",
            "script": "${file}",
            "args": [ "-Credential $Global:credential"],
            "cwd": "${file}"
        }
]

但是,该脚本不会获得$Global:credential的值(相反,它会提示输入凭据)。我认为这应该是可能的,因为这个https://code.visualstudio.com/docs/editor/tasks-appendix说明,如果没有指定环境,则使用父进程环境。

你知道我错过了什么吗,或者这是不可能的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-14 05:34:10

与任务定义中的可选env键相关的https://code.visualstudio.com/docs/editor/tasks-appendix状态:

代码语言:javascript
复制
   /**
     * The environment of the executed program or shell. If omitted
     * the parent process' environment is used.
     */

这与环境变量有关,而与PowerShell会话无关。

此外,所引用的父进程环境是Visual Studio自己的环境变量块。

换句话说:

  • 由于PS任务会话在PS调试会话启动时已退出,因此您无法在这两个会话之间传递变量。
  • 甚至尝试在PS任务会话中设置环境变量也不会起作用,因为这两个会话都是以VS代码作为父进程运行的,并且看不到对方的环境modifications.

您最好的办法是使用(临时) files 将值从任务会话传递到调试会话。

有关如何将凭据保存到文件以及从文件恢复凭据的信息,请参阅this answer

警告:仅适用于Windows。

选择一个文件位置(在最简单的情况下,使用固定的名称,例如$HOME/.test-creds.clixml),任务会话将写入该文件,然后调试会话将读取该文件,如下所示:

代码语言:javascript
复制
"args": [ "-Credential (Import-CliXml $HOME/.test-creds.clixml)" ],
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51317136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档