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

Kyf*_*rEz 9 string environment-variables filepath powershell-4.0

所以我有这个代码:

$userprofile=Get-ChildItem Env:USERPROFILE
$localpath="$userprofile\some\path"
Run Code Online (Sandbox Code Playgroud)

我希望下面的输出来自$localpath:

c:\users\username\some\path
Run Code Online (Sandbox Code Playgroud)

但是我得到的是:

System.Collections.DictionaryEntry\some\path
Run Code Online (Sandbox Code Playgroud)

所以,当然,像cd $localpath失败的东西.我如何实现我的需求?

小智 14

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

$localpath = "$env:USERPROFILE\some\path"
Run Code Online (Sandbox Code Playgroud)

欲获得更多信息:

PowerShell环境提供程序

about_Environment_Variables

此外,Join-Pathcmdlet是组合路径的两个部分的好方法.

$localpath = Join-Path $env:USERPROFILE 'some\path'
Run Code Online (Sandbox Code Playgroud)

  • 如果您来自于CMD繁重的Windows脚本世界,请不要忘记在设置程序名称中包含`$`。在CMD中,`Set varname = something`必须是`$ varname = something`,而不是_ ** not ** _`varname = something`。 (2认同)