Вот что происходит ...
В любом пути Windows PowerShell пустые символы или пробелы должны быть заключены в набор кавычек или скобок. Переменная среды PowerShell для C:\Program Files (x86)
равна ${env:ProgramFiles(x86)}
, а не $env:ProgamFiles(x86)
, поскольку PowerShell необходимо экранировать пустые места в реальном пути.
Если вы используете явную переменную окружения '$ {env: ProgramFiles (x86)}' ", она прекрасно работает.
Это не сработает ...
PS C:\> cd "$env:programfiles(x86)"
Set-Location : Cannot find path 'C:\Program Files(x86)' because it does not e
At line:1 char:3
+ cd <<<< "$env:programfiles(x86)"
+ CategoryInfo : ObjectNotFound: (C:\(x86):String)
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.
или это ...
PS C:\> $env:ProgramFiles(x86)
Unexpected token '(' in expression or statement.
At line:1 char:19
+ $env:ProgramFiles( <<<< x86)
+ CategoryInfo : ParserError: ((:String) [], Parent
+ FullyQualifiedErrorId : UnexpectedToken
Но это прекрасно работает ...
PS C:\> ${env:ProgramFiles(x86)}
C:\Program Files (x86)
PS C:\> $f = "${env:ProgramFiles(x86)}" + "\sometextfile.txt"
PS C:\> $f
C:\Program Files (x86)\sometextfile.txt
PS C:\> gci $f
Directory: C:\Program Files (x86)
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 12/13/2010 8:58 AM 0 sometextfile.txt