Ответ 1
Вот что происходит...
На любом пути Windows Powershell пустые символы или пробелы должны быть окружены набором кавычек или скобок. Переменная окружения Powershell для C:\Program Files (x86) равна ${env:ProgramFiles(x86)}
not $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
Надеюсь, это поможет!
~ Dan