Does PowerShell treat environmental variables differently to normal variables?

Viewed 71

This has got me scratching my head. Can anybody explain what's going on here?

PS C:\Users\xxx> $foo = ""
PS C:\Users\xxx> $foo -eq ""
True
PS C:\Users\xxx> $env:bar = ""
PS C:\Users\xxx> $env:bar -eq ""
False
PS C:\Users\xxx> $env:bar = "a"
PS C:\Users\xxx> $env:bar -eq "a"
True
PS C:\Users\xxx>
1 Answers

Environment variables can't be empty. This line: $env:bar = "" actually removes the variable. Try the below script, you'll see that only "ABC" is persisted in the variable.

Remove-Item Env:\bar
$env:bar = ""
$env:bar
$env:bar = "ABC"
$env:bar
$env:bar = ""
$env:bar
Get-Item Env:\bar
Related