Ответ 1
invoke-item
будет искать обработчик по умолчанию для типа файла и сказать ему его запустить. Это в основном так же, как двойной щелчок по файлу в проводнике или с помощью start.exe
.
Я пытаюсь запустить .cmd файл на удаленном сервере с помощью PowerShell.
В моем .ps1 script Я пробовал это:
C:\MyDirectory\MyCommand.cmd
Это приводит к ошибке:
C:\MyDirectory\MyCommand.cmd is not recognized as the name of a cmdlet,
function, script file, or operable program.
И этот
Invoke-Command C:\MyDirectory\MyCommand.cmd
приводит к этой ошибке:
Invoke-Command : Parameter set cannot be resolved using the specified named
parameters.
Мне не нужно передавать какие-либо параметры в PowerShell script. Каков правильный синтаксис, который я ищу?
invoke-item
будет искать обработчик по умолчанию для типа файла и сказать ему его запустить. Это в основном так же, как двойной щелчок по файлу в проводнике или с помощью start.exe
.
Попробуйте вызвать cmd /c C:\MyDirectory\MyCommand.cmd
- это должно работать.
Перейти к C:\MyDirectory
и попробуйте следующее:
PS C:\MyDirectory > .\MyCommand.cmd
Чтобы запустить или преобразовать пакетные файлы в PowerShell (особенно если вы хотите подписать все запланированные сценарии задач с сертификатом), я просто создаю PowerShell script, например, deletefolders.ps1.
Введите следующие данные в script:
cmd.exe /c "rd /s /q C:\#TEMP\test1"
cmd.exe /c "rd /s /q C:\#TEMP\test2"
cmd.exe /c "rd /s /q C:\#TEMP\test3"
* Каждая команда должна быть помещена в новую строку, снова вызов cmd.exe.
Теперь этот script можно подписать и запустить из PowerShell, выводя команды в командную строку /cmd напрямую.
Это гораздо безопаснее, чем запуск пакетных файлов!