在VS代码中,我定义了一个任务:
"tasks": [
{
"label": "getcredentials",
"type": "shell",
"command": ".\\TestScripts\\GetCredentials.ps1"
}
]
GetCredentials.ps1创建凭据并将其分配给$Global:credential。
在launch.json中,我想使用$Global:credential作为我正在调试的实际脚本的参数:
"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说明,如果没有指定环境,则使用父进程环境。
你知道我错过了什么吗,或者这是不可能的?
发布于 2018-07-14 05:34:10
与任务定义中的可选env
键相关的https://code.visualstudio.com/docs/editor/tasks-appendix状态:
/**
* The environment of the executed program or shell. If omitted
* the parent process' environment is used.
*/
这与环境变量有关,而与PowerShell会话无关。
此外,所引用的父进程环境是Visual Studio自己的环境变量块。
换句话说:
您最好的办法是使用(临时) files 将值从任务会话传递到调试会话。
有关如何将凭据保存到文件以及从文件恢复凭据的信息,请参阅this answer。
警告:仅适用于Windows。
选择一个文件位置(在最简单的情况下,使用固定的名称,例如$HOME/.test-creds.clixml
),任务会话将写入该文件,然后调试会话将读取该文件,如下所示:
"args": [ "-Credential (Import-CliXml $HOME/.test-creds.clixml)" ],
https://stackoverflow.com/questions/51317136
复制相似问题