我正在尝试在PowerShell脚本中安排一个命令,以便使用Windows调度程序运行。此命令依赖于特定于用户的环境变量,并且由于计划任务无法访问这些变量,因此我决定尝试在PowerShell脚本本身内设置变量。
正常的环境变量配置如下所示:
为了在脚本中复制它,我尝试使用:
$env:DCRCLIFILE = "C:\Users\pzsr7z\Desktop\DCRCLIFILE.txt"
但是由于某种原因,当我以这种方式设置时程序将无法正常工作,即使在使用“普通”用户环境变量运行程序时它完全正常。
使用PowerShell启动的环境变量执行程序
使用“普通”环境变量执行程序:
在PowerShell脚本中设置环境变量时,我应该做些什么?我不确定为什么这不起作用。我已经验证环境变量实际上已经创建了,所以它不像PowerShell命令失败。
答案 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中手动设置变量时,我不确定为什么事情无法正常工作。