Reputation: 397
So I have this code:
$userprofile=Get-ChildItem Env:USERPROFILE
$localpath="$userprofile\some\path"
I would expect output of the below from $localpath
:
c:\users\username\some\path
However what I get is:
System.Collections.DictionaryEntry\some\path
So, of course, something like cd $localpath
fails. How would I accomplish what I need?
Upvotes: 17
Views: 30539
Reputation: 365
Late to the party and apart from whether the example is a good way of getting an environment variable, the actual answer to the question is this:
$userprofile = Get-ChildItem Env:USERPROFILE
$localpath="$($userprofile.Value)\some\path"
This might be functionality of newer versions of Powershell since the original question though.
Upvotes: 0
Reputation: 681
A convenient way to obtain the string value rather than the dictionary entry (which is technically what Get-ChildItem
is accessing) is to just use the variable syntax: $Env:USERPROFILE
rather than Get-ChildItem Env:USERPROFILE
.
$localpath = "$env:USERPROFILE\some\path"
For more information:
PowerShell Environment Provider
Also, the Join-Path
cmdlet is a good way to combine two parts of a path.
$localpath = Join-Path $env:USERPROFILE 'some\path'
Upvotes: 29