如果我进入:
set DOTNET_CLI_TELEMETRY_OPTOUT=1
或
setx DOTNET_CLI_TELEMETRY_OPTOUT 1
要永久保存此设置,则应将DOTNET_CLI_TELEMETRY_OPTOUT设置为True,但如何查询它?
没有
get DOTNET_CLI_TELEMETRY_OUTPUT
指挥官然后呢
echo $DOTNET_CLI_TELEMETRY_OPTOUT
只给予1,如果
set DOTNET_CLI_TELEMETRY_OPTOUT 1
输入了而不是
set DOTNET_CLI_TELEMETRY_OPTOUT=1
应该被使用。
1条答案
按热度按时间jmo0nnb31#
tl;dr
$env:DOTNET_CLI_TELEMETRY_OPTOUT
来 * 获取 * 当前进程的环境变量DOTNET_CLI_TELEMETRY_OPTOUT
的值(你不能从这个值中分辨出它是反映了一个 * 持久地 * 定义的环境变量还是只为 * 当前进程 * 设置的环境变量)。$env:DOTNET_CLI_TELEMETRY_OPTOUT = 1
来 * 设置 * 它的值,但它只对当前进程有效 *。setx.exe
(如您所试)或使用.NET API(见下文)。set DOTNET_CLI_TELEMETRY_OPTOUT=1
您正在尝试在PowerShell中使用
cmd.exe
语法,这将不起作用。在PowerShell中,上面的内容将转换为以下内容,假定set
是Set-Variable
的内置别名,其第一个位置参数是-Name
这将创建一个名为
DOTNET_CLI_TELEMETRY_OPTOUT=1
* 的 * shell专用 * 变量 *,但没有值 *($null
)。通过 shell-only 变量,我的意思是只有当前PowerShell会话知道的regular PowerShell variable,并且与 environment 变量不同,其他进程看不到。
要为当前进程 * 定义environment variable *,请使用
$env:
命名空间:您可以使用相同的语法查询值,这对于 persistent 环境变量和仅为当前进程定义的环境变量同样有效:
PowerShell不直接支持定义持久化环境变量。
使用
setx.exe
实用程序(在Windows上)-正如您所尝试的- * 是一个选项。也可以使用.NET APIs:
然而,请注意,在这两种情况下,新的/更新的值将仅在 future 会话中看到,即将仅自动显示为 * 进程级 * 环境变量。
但是,您可以再次使用.NET API直接从注册表中检索当前持久化的值,假设您知道其范围(
User
与Machine
-您可能必须尝试两者);例如: