如果我进入:

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

这是应该使用的.

推荐答案

tl;dr

  • 使用$env:DOTNET_CLI_TELEMETRY_OPTOUTget的当前进程的环境变量DOTNET_CLI_TELEMETRY_OPTOUT的值(您不能从这个值判断它是反映了persistently定义的环境变量还是仅为current process设置的环境变量).

  • 使用它的值,例如从$env:DOTNET_CLI_TELEMETRY_OPTOUT = 1set,但它将生效为for the current process only.

  • 要设置一个值(仅在Windows上受支持),请使用setx.exe(如您所try 的那样)或使用.NET API(见下文).

    • 这样的持久更新仅对future个会话可见(作为进程级环境变量).
    • 但是,您可以通过.NETAPI查询当前持久化值(见下文).

set DOTNET_CLI_TELEMETRY_OPTOUT=1

您试图在PowerShell中使用cmd.exe语法,但这不会起作用. 在PowerShell中,假设setSet-Variable的内置别名,其第一个位置参数为-Name,则上述内容可转换为以下内容

Set-Variable -Name DOTNET_CLI_TELEMETRY_OPTOUT=1

这将创建名为DOTNET_CLI_TELEMETRY_OPTOUT=1 without a value($null)的shell-only变量literally.

我所说的shell-only变量是指只有当前PowerShell会话才知道的regular PowerShell variable,与environment变量不同,它是其他进程可以看到的not.


要定义environment variable for the current process,请使用$env:命名空间:

$env:DOTNET_CLI_TELEMETRY_OPTOUT = 1

您可以使用相同的语法查询值,这对persistent个环境变量和仅为当前进程定义的环境变量同样有效:

$env:DOTNET_CLI_TELEMETRY_OPTOUT

PowerShell为定义persistent个环境变量提供了no个直接支持.

按照您的try ,使用setx.exe实用程序(在Windows上)-is选项.

您还可以使用.NET APIs:

# 'User' creates / updates a persistent definition for the *current user*.
# Use 'Machine' to create / update a machine-level definition, but 
# note that doing so requires *elevation* (running as admin).
[Environment]::SetEnvironmentVariable('DOTNET_CLI_TELEMETRY_OPTOUT', '1', 'User')

然而,请注意,在这两种情况下,新/更新的值将仅在future个会话中看到,即仅在那里自动显示为process-level个环境变量.

但是,您可以再次使用.NETAPI直接从注册表检索当前持久化值,假设您知道它的作用域(Uservs.Machine--您可能必须同时try 两者);例如:

[Environment]::GetEnvironmentVariable('DOTNET_CLI_TELEMETRY_OPTOUT', 'User')

.net相关问答推荐

节省用户在整个应用程序中使用的Flutter

如何将 Assembly.CodeBase 转换为 C# 中的文件系统路径?

调整小数精度,.net

如何判断 IOException 是否为 Not-Enough-Disk-Space-Exception 类型?

是否有任何 x 次的 for 循环的更短/更简单的版本?

如何让 DateTimePicker 显示一个空字符串?

如何使用c#从excel文件中读取数据

在 C# 中转义命令行参数

如何将枚举值序列化为 int?

互锁且易变

如何将 XPath 与 XElement 或 LINQ 一起使用?

使用 XmlDocument 读取 XML 属性

CI服务器的比较?

我应该如何删除 DbSet 中的所有元素?

MVC4 HTTP 错误 403.14 - 禁止

ValueTypes 如何从 Object (ReferenceType) 派生并且仍然是 ValueTypes?

obj 文件夹是为了什么而生成的?

SqlCommand.CommandTimeout 和 SqlConnection.ConnectionTimeout 有什么区别?

通过反射获取公共静态字段的值

枚举和匹配属性的 C# 命名约定