Подтвердить что ты не робот

Как запустить PowerShell в CMD

Я пытаюсь запустить скрипт PowerShell внутри командной строки cmd. Кто-то дал мне пример, и это сработало:

powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"

Но проблема в том, что мой скрипт PowerShell имеет входные параметры, поэтому я попытался, но это не работает:

powershell.exe -noexit "& 'D:\Work\SQLExecutor.ps1 -gettedServerName "MY-PC" ' "

Ошибка:

Термин "D:\Work\SQLExecutor.ps1 -gettedServerName" MY-PC "" не распознается как имя командлета, функции,

Как я могу решить эту проблему?

4b9b3361

Ответ 1

Вам нужно отделить аргументы от пути к файлу:

powershell.exe -noexit "& 'D:\Work\SQLExecutor.ps1 ' -gettedServerName 'MY-PC'"

Другая опция, которая может облегчить синтаксис с помощью параметра File и позиционных параметров:

powershell.exe -noexit -file "D:\Work\SQLExecutor.ps1" "MY-PC"

Ответ 2

Я хотел бы добавить следующее к правильному ответу Шей Леви: Вы можете упростить свою жизнь, если создадите небольшой пакетный скрипт run.cmd для запуска своего сценария powershell:

@echo off & setlocal
set batchPath=%~dp0
powershell.exe -noexit -file "%batchPath%SQLExecutor.ps1" "MY-PC"

Поместите его в тот же путь, что и SQLExecutor.ps1 и теперь вы можете запустить его, просто дважды щелкнув по run.cmd.


Замечания:

  • Если вам требуются аргументы командной строки в пакете run.cmd, просто передайте их как %1... %9 (или используйте %* для передачи всех параметров) сценарию powershell, т.е.
    powershell.exe -noexit -file "%batchPath%SQLExecutor.ps1" %*

  • Переменная batchPath содержит путь выполнения самого пакетного файла (для этого используется выражение %~dp0). Таким образом, вы просто помещаете скрипт powershell в тот же путь, что и вызывающий пакетный файл.

Ответ 3

Попробуйте просто:

powershell.exe -noexit D:\Work\SQLExecutor.ps1 -gettedServerName "MY-PC"