【问题标题】:Is it possible to create a path which consist of an environment variable + the filename是否可以创建一个由环境变量+文件名组成的路径
【发布时间】:2016-05-19 18:03:08
【问题描述】:

我想将一个 .exe 文件复制到 /App/Data/Local/Temp 并在之后运行该 exe。而不是添加完整的静态文件路径,我想使用$env:TEMP 不依赖于 ps 内的用户帐户。基于$env:TEMP + .exe 文件,我尝试创建一个新变量$LocalInstall,稍后我可以在 ps 中使用它,但它似乎不起作用。

$LocalInstallFile=$env:TEMP."\Agent.exe"

稍后应该使用$LocalInstallFile 来运行带有安装属性的安装

Invoke-Expression "$LocalInstallFile /DIR=c:\"

我也可以使用

Invoke-Expression "$env:TEMP\Agent.exe"

【问题讨论】:

  • 你试过最后一行了吗?它应该可以正常工作...
  • 真的,它有效。我只是想知道为什么当我从 Powershell ISE 或 Powershell (AppData/Local/Temp) (AppData/Local/Temp/1) 运行 $env:TEMP 时会得到不同的路径?这就是为什么它不起作用
  • 你不应该得到不同的结果,除非你像$env:temp += "\1" 那样修改它(只会在那个控制台/进程中修改它)。无法重现
  • 我也没想到。好像和虚拟机有关,虽然我没修改过。

标签: powershell environment-variables powershell-3.0


【解决方案1】:

表达式

$LocalInstallFile=$env:TEMP."\Agent.exe"

将扩展$env:TEMP 环境变量,然后尝试在字符串对象上调用名为“\Agent.exe”的属性,该对象当然不存在,因此$LocalInstallFile 为空。相反,创建这样的字符串:

$LocalInstallFile="$env:TEMP\Agent.exe"

【讨论】:

  • 谢谢它的工作。这是如何格式化字符串的常见做法还是还有其他首选方法?如果我以后使用变量 $LocalnstallFile 来运行 .exe,我是否需要使用运算符 (&) 强制它
猜你喜欢
  • 2013-10-06
  • 2018-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多