Powershell 将环境变量与路径连接

问题描述 投票:0回答:2

所以我有这个代码:

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

我期望从

$localpath
得到以下输出:

c:\users\username\some\path

但是我得到的是:

System.Collections.DictionaryEntry\some\path

所以,像

cd $localpath
这样的东西当然会失败。我将如何完成我需要的事情?

string environment-variables filepath powershell-4.0
2个回答
27
投票

获取字符串值而不是字典条目(从技术上讲,这就是

Get-ChildItem
正在访问的内容)的一种便捷方法是仅使用变量语法:
$Env:USERPROFILE
而不是
Get-ChildItem Env:USERPROFILE

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

欲了解更多信息:

PowerShell 环境提供程序

关于_环境_变量

此外,

Join-Path
cmdlet 是组合路径的两个部分的好方法。

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

0
投票

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

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

这可能是自最初问题以来新版本 Powershell 的功能。

© www.soinside.com 2019 - 2024. All rights reserved.