在32位/x86系统上,${env:ProgramFiles(x86)} Powershell变量包含什么?

27
简单问题:
如果我在32位系统的PowerShell脚本中使用${env:ProgramFiles(x86)}变量,它是否会返回“C:\Program Files”或未定义?
在x64系统上,无论在x64还是x86模式下运行时,它都将映射到“C:\Program Files (x86)”文件夹。我没有32位系统进行测试,但我希望它将被映射到“C:\Program Files”文件夹,以便我可以在任何系统上使用它来引用x86程序。

如果你正在为两种架构开发,你应该确保在两种架构上进行测试。 - Ash Burlaczenko
我有一个x86环境的请求,但是我认为这应该在某个地方有记录。可惜在网上找不到 :-( - Greg Bray
1个回答

39

${env:ProgramFiles(x86)} 在32位系统上未定义。您可以测试 $null 来验证。


6
谢谢!我最终使用了-ne运算符“空值合并”从https://dev59.com/omkv5IYBdhLWcg3wZwC-#17647824来完成这个操作:`$dir = (${env:ProgramFiles(x86)}, ${env:ProgramFiles} -ne $null)[0]`。虽然不太美观,但它能工作。 - Greg Bray
2
准确来说,在32位系统上,环境变量未定义,因此例如如果您执行 dir env: 它将不会存在。但是,PowerShell 如果尝试访问不存在的变量,则返回 $null。 - StephenD
@StephenD 是的,那更准确了。我已经更新了答案。 - Keith Hill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接