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

lac*_*991 3 powershell

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

正常的环境变量配置如下所示: 在此输入图像描述

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

$env:DCRCLIFILE = "C:\Users\pzsr7z\Desktop\DCRCLIFILE.txt"
Run Code Online (Sandbox Code Playgroud)

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

使用powershell启动的环境变量执行程序 图片描述

使用"普通"环境变量执行程序: 在此输入图像描述

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

Jam*_* C. 12

$env:DCRCLIFILE = "C:\Users\pzsr7z\Desktop\DCRCLIFILE.txt"
Run Code Online (Sandbox Code Playgroud)

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

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

[Environment]::SetEnvironmentVariable("DCRCLIFILE", "C:\Users\pzsr7z\Desktop\DCRCLIFILE.txt", "User")
Run Code Online (Sandbox Code Playgroud)


lac*_*991 0

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

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