Параметр - это список через запятую (массив).

у запустить программу с PowerShell, используяStart-Process в партии, но с условиями.

Я проверил это, и я побежалcmd /c с помощьюStart-Process команда.

Команда:

powershell -Command "Start-Process `cmd /c` -Verb runas"

Это не сработало.

Поэтому я проверил это на PowerShell. Пробовал ту же команду, и она вернула эту ошибку:

Start-Process : A positional parameter cannot be found that accepts argument
'runas'.
At line:1 char:14
+ Start-Process <<<<  'cmd /c' -Verb runas
    + CategoryInfo          : InvalidArgument: (:) [Start-Process], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand

Как я могу сделать эту работу на пакетной, используяpowershell команда и на основной PowerShell?

 Squashman17 дек. 2017 г., 05:43
powershell -command "start-process `cmd /c` runas"
 DisplayName17 дек. 2017 г., 06:17
должно быть простымStart-Process cmd /c –Verb RunAs
 nkasco17 дек. 2017 г., 05:53
Я не уверен, что вы можете сделать так, чтобы запущенная программа запускалась в контексте администратора, если вы не нашли ответ, который ищете здесь, изучите выполнение запланированных задач.
 PetSerAl17 дек. 2017 г., 05:54
powershell -command "start-process cmd /c -verb runas"

Ответы на вопрос(1)

Решение Вопроса

Бэктик - это экранирующий символ PowerShell. В заявлении

Start-Process `cmd /c` -Verb runas

спины избежатьc изcmd и пространство после/c, Первое не проблематично, потому что оно просто делаетc буквальныйc (что это в любом случае). Тем не менее, избегая пространства между/c а также-Verb эффективно поворачивает всю последовательность/c -Verb в одну строку. В основном это так же, как если бы вы запустили это утверждение:

Start-Process cmd "/c -Verb" runas

посколькуStart-Process принимает только 2 позиционных параметра (-FilePath а также-ArgumentList) все остальное должно быть передано через именованные параметры. Отсюда ошибка, что ни один позиционный параметр не принимает аргументrunas.

Запустите команду так:

Start-Process cmd /c, dir, "$env:windir\temp" -Verb runas

или же

Start-Process -FilePath 'cmd.exe' -ArgumentList '/c', 'dir', "$env:windir\temp" -Verb runas

или как это (из CMD):

powershell.exe -Command "Start-Process cmd /c, dir, \"$env:windir\temp\" -Verb runas"

и это будет работать так, как вы ожидаете.

редактировать
Поскольку, по-видимому, изначально это было недостаточно ясно: аргумент-ArgumentList Параметр - это список через запятую (массив).

Start-Process cmd /c, dir, "$env:windir\temp" -Verb runas
#                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
#                       this right here

Ваш ответ на вопрос