Я уже читал и пробовал разные способы, но это не сработает ... Я даже пытался избежать пробелов, а также пытался добавить дополнительные кавычки (экранированные кавычки) перед путем ...
$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
Это продолжает давать мне это:
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
Я пробовал с другим путем, скажем, C:\Blah\W T F
он все равно будет жаловаться на пробелы, которые находятся внутри W T F
.
Изменить: По сути, мне нужно было запустить elevated powershell
а затем компакт-диск в мой каталог, чтобы запустить сценарий после установки. Но у меня есть трудный компакт-диск в мой каталог, я смог запустить мой повышенный PowerShell, но он всегда идет в c:\windows\system32
.
Edit2:
$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
Edit3:
У меня есть этот скрипт вызов load-ems.ps1 (для загрузки Exchange Management Shell), и я пытаюсь запустить эту оболочку с повышенными правами. Но моя проблема в том, что: 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"