在PowerShell脚本中设置用户环境变量的正确方法是什么?

时间:2016-11-18 14:25:45

标签: powershell

我正在尝试在PowerShell脚本中安排一个命令,以便使用Windows调度程序运行。此命令依赖于特定于用户的环境变量,并且由于计划任务无法访问这些变量,因此我决定尝试在PowerShell脚本本身内设置变量。

正常的环境变量配置如下所示:

Enter image description here

为了在脚本中复制它,我尝试使用:

$env:DCRCLIFILE = "C:\Users\pzsr7z\Desktop\DCRCLIFILE.txt"

但是由于某种原因,当我以这种方式设置时程序将无法正常工作,即使在使用“普通”用户环境变量运行程序时它完全正常。

使用PowerShell启动的环境变量执行程序

Image description

使用“普通”环境变量执行程序:

Enter image description here

在PowerShell脚本中设置环境变量时,我应该做些什么?我不确定为什么这不起作用。我已经验证环境变量实际上已经创建了,所以它不像PowerShell命令失败。

2 个答案:

答案 0 :(得分:10)

$env:DCRCLIFILE = "C:\Users\pzsr7z\Desktop\DCRCLIFILE.txt"

这只会创建一个进程级环境变量,该变量仅对您当前的PowerShell会话可见,并且只持续。

您需要使用.NET Framework和SetEnvironmentVariable方法设置更永久的环境变量(用户级或机器级):

[Environment]::SetEnvironmentVariable("DCRCLIFILE", "C:\Users\pzsr7z\Desktop\DCRCLIFILE.txt", "User")

答案 1 :(得分:0)

我最后通过创建一个单独的批处理文件,然后在那里手动设置DCRCLIFILE变量来解决这个问题,之后我在同一个批处理文件中运行了dcrclifile.exe命令。

当我尝试在PowerShell中手动设置变量时,我不确定为什么事情无法正常工作。