tl;dr个
使用$env:DOTNET_CLI_TELEMETRY_OPTOUT
到get的当前进程的环境变量DOTNET_CLI_TELEMETRY_OPTOUT
的值(您不能从这个值判断它是反映了persistently定义的环境变量还是仅为current process设置的环境变量).
使用它的值,例如从$env:DOTNET_CLI_TELEMETRY_OPTOUT = 1
到set,但它将生效为for the current process only.
要设置一个值(仅在Windows上受支持),请使用setx.exe
(如您所try 的那样)或使用.NET API(见下文).
- 这样的持久更新仅对future个会话可见(作为进程级环境变量).
- 但是,您可以通过.NETAPI查询当前持久化值(见下文).
set DOTNET_CLI_TELEMETRY_OPTOUT=1
个
您试图在PowerShell中使用cmd.exe
语法,但这不会起作用.
在PowerShell中,假设set
是Set-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直接从注册表检索当前持久化值,假设您知道它的作用域(User
vs.Machine
--您可能必须同时try 两者);例如:
[Environment]::GetEnvironmentVariable('DOTNET_CLI_TELEMETRY_OPTOUT', 'User')