- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到过几种情况,我试图通过命令行使用命令,但无法识别该命令。我已将其范围缩小到环境变量的问题。在每种情况下,当我使用底层 C# 方法检索变量时,变量存在,但不使用速记 $env:myVariable
例如,如果我像这样检索变量,我将得到一个值。
[Environment]::GetEnvironmentVariable('ChocolateyInstall', 'Machine')
但是,如果我像这样检索变量,则不会返回任何内容
$env:ChocolateyInstall
然后我必须做这样的事情才能让我的命令工作。
$env:ChocolateyInstall = [Environment]::GetEnvironmentVariable('ChocolateyInstall', 'Machine')
我一直无法找到一个很好的解释来解释为什么我必须这样做。我看过
this documentation ,但对我来说没有什么特别突出的。理想情况下,我想安装一个 CLI,然后不必处理检查和分配环境变量以使命令工作。
最佳答案
打开 PowerShell session 时,所有永久存储的环境变量 1 将加载到当前 session ( source ) 的环境驱动器 ( Env:
) 中:
The Environment drive is a flat namespace containing the environmentvariables specific to the current user's session.
When you change environment variables in PowerShell, the changeaffects only the current session. This behavior resembles the behaviorof the
Set
command in the Windows Command Shell and theSetenv
commandin UNIX-based environments. To change values in the Machine or Userscopes, you must use the methods of the System.Environment class.
$env:ChocolateyInstall = [Environment]::GetEnvironmentVariable('ChocolateyInstall', 'Machine')
将在当前 session 中更改它,从而立即生效,但也仅对当前 session 有效。
[System.Environment]
的方法粒度更细。在那里您可以选择要寻址的环境变量范围。有三个范围可用:
Process
scope 相当于 Environment 驱动器,涵盖当前 session 中可用的环境变量。
Machine
和
User
作用域地址永久存储的环境变量1。您可以像这样从特定范围获取变量:
[Environment]::GetEnvironmentVariable('ChocolateyInstall', 'Machine')
并将它们设置为:
[Environment]::SetEnvironmentVariable('ChocolateyInstall', 'any/path/to/somewhere', 'Machine')
如果您想从
Machine
获得新变量或
User
如果当前 PowerShell session 中可用的范围,则必须创建一个新范围。但不要从当前的 PowerShell session 中打开新的 PowerShell session ,因为它会从当前的 PowerShell session (
source ) 继承所有环境变量:
Environment variables, unlike other types of variables in PowerShell,are inherited by child processes, such as local background jobs andthe sessions in which module members run. This makes environmentvariables well suited to storing values that are needed in both parentand child processes.
Machine
的环境变量。范围。无需重新启动。
User
和
Machine
范围。
rundll32 sysdm.cpl,EditEnvironmentVariables
关于Powershell GetEnvironmentVariable 与 $Env,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63006323/
我遇到过几种情况,我试图通过命令行使用命令,但无法识别该命令。我已将其范围缩小到环境变量的问题。在每种情况下,当我使用底层 C# 方法检索变量时,变量存在,但不使用速记 $env:myVariable
我是 C++ 新手,但想学习。我有一个小程序可以将一些信息写入我的 \etc\hosts在 Windows 中;我得到 %WINDIR%通过 GetEnvironmentVariable() 变量,如
我想获取临时文件夹的路径 (C:\Users\user\AppData\Local\Temp)。 GetEnvironmentVariable("TEMP") 工作正常,但我得到了波浪号的路径: C:
为什么 Environment.GetEnvironmentVariable("variableName") 如果调用是从托管在 IIS 上的 webMethod 中进行的,为什么不能获取变量的值,如
我有一个 DLL 使用 getenv 获取启动选项( ) 电话。我想在打开 DLL 之前在同一个进程中设置该变量,以便可以通过 getenv 访问它。 .我应该使用哪个函数来设置它? 我了解到win
我正在 OSX 上运行一个控制台应用程序,它具有以下... public static void main(string[] args) { string mongoEndpoint = En
在 .NET 4.5.1 或 .NET 4.5.2 上执行的以下代码示例(相同结果)中,当代码查询“不存在”变量时会发生一些奇怪的事情。另一个完全存在的值为空字符串的变量“myvar”将不再通过调用
我正在使用 Win32 函数 GetEnvironmentVariable 来检索我刚刚创建的变量的值。我正在运行 Windows XP 和 VC++ 2005。如果我从 Visual Studio
(与其说这是一个学究气的练习,不如说是个问题,所以就这样吧。) 我制作了一个很好的小程序,它是我的 linux 操作系统的 native 程序,但我认为它也足够有用,可以存在于我的 Windows 机
行是 if (!val.Contains(Environment.GetEnvironmentVariable("windir"))) 这似乎在 Windows 7(64 位)系统上工作得很好,并且会
我刚刚在我的一项 Azure 应用服务中创建了一个“暂存”槽。 在 Azure 门户中,在该插槽的应用程序设置中,我创建了一个新 key ,如下所示: ...并将其设为“插槽设置”,因为我不希望交换此
我刚刚在我的一项 Azure 应用服务中创建了一个“暂存”槽。 在 Azure 门户中,在该插槽的应用程序设置中,我创建了一个新 key ,如下所示: ...并将其设为“插槽设置”,因为我不希望交换此
如果我使用项目属性页面在 Visual Studio 2017 中为 .Net Core Web 项目设置环境变量,我可以使用 Environment.GetEnvironmentVariable 读
我想用 C# 程序扩展当前的 PATH 变量。这里我有几个问题: 使用 GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine
本文整理了Java中org.apache.gobblin.yarn.YarnHelixUtils.getEnvironmentVariables()方法的一些代码示例,展示了YarnHelixUtil
我有一个 xml 文件,我想从中读取 string xmlTemplatePath = Path.Combine(Environment.GetEnvironmentVariable("RoleRoo
我有一个 xml 文件,我想从中读取 string xmlTemplatePath = Path.Combine(Environment.GetEnvironmentVariable("RoleRoo
您好,我正在为我正在使用的安装程序使用 Inno Setup(基于 Delphi)。我只想将用户名放入字符串中:我的代码: var usrname: string; begin usrname :=
我有一个方法(在单独的类库中),由 WebRole 和 WorkerRole 调用。此方法包含文件的路径,使用 Environment.GetEnvironmentVariable("RoleRoot
我已使用 Visual Studio 2017 将我的应用程序发布到 Azure Function。由于环境变量中的连接字符串始终为空,我在日志中收到对象引用错误,但是,该应用程序在本地运行良好。下面
我是一名优秀的程序员,十分优秀!