Eu já li e tentei várias maneiras, mas isso não vai aguentar ... Eu até tentei escapar dos espaços e também tentar adicionar aspas extras (citações com escape) na frente do caminho. .
$cmd = 'powershell.exe'
$dir = 'C:\Program Files (x86)\W T F'
$inner = "-NoExit -Command cd $dir"
$arguments = "Start-Process powershell -ArgumentList '$inner' -Verb RunAs"
& $cmd $arguments
Ele continua me dando isso:
x86 : The term 'x86' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:22
+ cd C:\Program Files (x86)\W T F
+ ~~~
+ CategoryInfo : ObjectNotFound: (x86:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Eu tentei com um caminho diferente, digamos C:\Blah\W T F
, ainda haveria reclamações sobre os espaços que estão dentro de W T F
.
Editar: Basicamente, eu precisava iniciar um elevated powershell
e, em seguida, o CD em meu diretório para executar algum script de pós-instalação. Mas estou tendo um disco rígido no meu diretório, consegui iniciar meu powershell elevado, mas ele sempre vai para c:\windows\system32
.
Editar2:
$PSVersionTable
Name Value
---- -----
PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.42000
BuildVersion 6.3.9600.18728
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion 2.2
Editar3:
Eu tenho esse script chamada load-ems.ps1 (para carregar o Shell de Gerenciamento do Exchange) e estou tentando iniciar esse shell como elevado. Mas meu problema é que 1) the shell would start in system32 and won't find my scripts
, 2) if i try to CD to my directory, i can't.
. ".\find-exchange.ps1"
$remoteexchangeps1 = Find-Exchange
$commands = @(
". '$remoteexchangeps1';",
"Connect-ExchangeServer -auto -ClientApplication:ManagementShell;",
".\plugin-reinstall.ps1;"
)
$command = @($commands | % {$_})
powershell.exe -noexit -command "$command"