Powershell 将环境变量与路径连接起来

Powershell concatenate an Environment variable with path

提问人:KyferEz 提问时间:12/9/2016 最后编辑:mklement0KyferEz 更新时间:10/17/2023 访问量:25698

问:

所以我有这个代码:

$userprofile=Get-ChildItem Env:USERPROFILE
$localpath="$userprofile\some\path"

我希望以下输出:$localpath

c:\users\username\some\path

但是,我得到的是:

System.Collections.DictionaryEntry\some\path

所以,当然,类似的东西会失败。我将如何完成我需要的东西?cd $localpath

字符串 环境变量文件 路径 powershell-4.0

评论


答:

27赞 John K 12/9/2016 #1

获取字符串值而不是字典条目(从技术上讲是访问的)的一种便捷方法是仅使用变量语法:而不是 .Get-ChildItem$Env:USERPROFILEGet-ChildItem Env:USERPROFILE

$localpath = "$env:USERPROFILE\some\path"

欲了解更多信息:

PowerShell 环境提供程序

about_Environment_Variables

此外,Join-Path cmdlet 是合并路径的两个部分的好方法。

$localpath = Join-Path $env:USERPROFILE 'some\path'

评论

0赞 John K 12/9/2016
@AnsgarWiechers 感谢您提供示例的深思熟虑的编辑。
2赞 kayleeFrye_onDeck 1/23/2018
如果您来自 CMD 繁重的 Windows 脚本世界,请不要忘记在您的 setter 名称中包含。在 CMD 中,必须是 , ,而不是 .$Set varname=something$varname=somethingvarname=something
0赞 Daap 10/17/2023 #2

迟到了,除了这个例子是否是获取环境变量的好方法之外,这个问题的实际答案是这样的:

$userprofile = Get-ChildItem Env:USERPROFILE
$localpath="$($userprofile.Value)\some\path"

不过,这可能是自原始问题以来较新版本的 Powershell 的功能。