Другое

Как запустить команды в новом CMD через PowerShell

Узнайте, как автоматизировать запуск CMD и выполнение команд через PowerShell. Полное руководство с примерами кода для запуска batch файлов в новом окне.

Как запустить команды в свежеоткрытом окне CMD через PowerShell?

Я пытаюсь автоматизировать открытие CMD окна и выполнение команд в нем через PowerShell. Вот что я уже пробовал:

  1. Мой текущий script.bat открывает CMD на весь экран:
batch
PowerShell -WindowStyle Hidden -Command "Start-Process cmd -WindowStyle Maximized"
  1. У меня есть script-hack.bat с командами, которые я хочу выполнить в CMD окне:
batch
color a
:L
ipconfig
netstat -an
arp -a
route print
netsh wlan show profiles
dir /s
goto L

Я пытался объединить эти скрипты или запустить их последовательно, но у меня не получается. Я пробовал использовать PowerShell скрипт (.ps1), но столкнулся с ошибками. Также пробовал такой вариант:

batch
PowerShell -ExecutionPolicy Bypass -File "E:\script-hack.ps1"

Как можно модифицировать мою PowerShell команду, чтобы автоматически выполнить команды из script-hack.bat в свежеоткрытом CMD окне?

Чтобы запустить команды из вашего script-hack.bat в свежеоткрытом CMD окне через PowerShell, используйте команду Start-Process с параметрами для открытия cmd.exe и передачи ему вашего batch файла. Для максимизации окна и запуска бесконечного цикла команд используйте следующий синтаксис: Start-Process cmd.exe -ArgumentList "/k E:\script-hack.bat" -WindowStyle Maximized.

Содержание

Основной метод запуска CMD с командами

Для запуска вашего script-hack.bat в новом CMD окне через PowerShell используйте следующую команду:

powershell
Start-Process cmd.exe -ArgumentList "/k E:\script-hack.bat" -WindowStyle Maximized

Эта команда делает следующее:

  • cmd.exe - запускает командную строку Windows
  • -ArgumentList "/k" - указывает cmd выполнить команду и оставить окно открытым
  • "E:\script-hack.bat" - путь к вашему файлу с командами
  • -WindowStyle Maximized - открывает окно в максимизированном режиме

Важно: Параметр /k сохраняет окно CMD открытым после выполнения команд, что идеально подходит для вашего бесконечного цикла в script-hack.bat. Если бы вы использовали /c, окно закрылось бы после завершения выполнения.

Параметры Start-Process для CMD

Команда Start-Process предлагает множество параметров для гибкого управления процессами:

Параметр Описание Пример использования
-FilePath Указывает путь к исполняемому файлу Start-Process -FilePath "cmd.exe"
-ArgumentList Передает аргументы процессу -ArgumentList "/k script.bat"
-WindowStyle Управляет стилем окна -WindowStyle Maximized
-NoNewWindow Запускает в текущем окне -NoNewWindow
-Verb Запускает с определенными правами -Verb RunAs
-WorkingDirectory Устанавливает рабочую директорию -WorkingDirectory "C:\Scripts"

Для вашей задачи наиболее важны параметры:

  • -ArgumentList "/k" - для сохранения окна открытым
  • -WindowStyle Maximized - для полноэкранного режима
  • -Verb RunAs - если требуются права администратора

Альтернативные способы выполнения batch файлов

Существует несколько альтернативных подходов к запуску batch файлов через PowerShell:

Прямой запуск batch файла

powershell
Start-Process -FilePath "E:\script-hack.bat" -WindowStyle Maximized

Использование cmd с полным путем

powershell
Start-Process cmd.exe -ArgumentList "/k `"E:\script-hack.bat`"" -WindowStyle Maximized

Запуск с правами администратора

powershell
Start-Process cmd.exe -ArgumentList "/k E:\script-hack.bat" -WindowStyle Maximized -Verb RunAs

Передача параметров в batch файл

Если вам нужно передавать параметры в ваш script-hack.bat:

powershell
$computerName = $env:COMPUTERNAME
Start-Process cmd.exe -ArgumentList "/k `"E:\script-hack.bat $computerName`"" -WindowStyle Maximized

Решение конкретной задачи с бесконечным циклом

Для вашего конкретного случая с script-hack.bat, содержащим бесконечный цикл :L и goto L, оптимальным решением будет:

powershell
Start-Process cmd.exe -ArgumentList "/k `"E:\script-hack.bat`"" -WindowStyle Maximized

Если вы хотите создать отдельный PowerShell скрипт (.ps1) для этой задачи:

powershell
# script-launcher.ps1
$batchPath = "E:\script-hack.bat"
Start-Process cmd.exe -ArgumentList "/k `"$batchPath`"" -WindowStyle Maximized

Для запуска этого PowerShell скрипта:

batch
powershell -ExecutionPolicy Bypass -File "E:\script-launcher.ps1"

Управление окнами и процессами

Параметры управления окнами

  • Normal - обычное окно
  • Hidden - скрытое окно
  • Maximized - максимизированное окно
  • Minimized - свернутое окно

Примеры управления окнами

powershell
# Запуск в обычном окне
Start-Process cmd.exe -ArgumentList "/k script.bat" -WindowStyle Normal

# Запуск в скрытом окне
Start-Process cmd.exe -ArgumentList "/c script.bat" -WindowStyle Hidden

# Запуск в минимизированном окне
Start-Process cmd.exe -ArgumentList "/k script.bat" -WindowStyle Minimized

Работа с несколькими процессами

Если вам нужно управлять несколькими окнами CMD:

powershell
# Запуск нескольких экземпляров
Start-Process cmd.exe -ArgumentList "/k `"E:\script-hack.bat`"" -WindowStyle Maximized
Start-Process cmd.exe -ArgumentList "/k `"E:\script-hack.bat`"" -WindowStyle Maximized

Советы по отладке и troubleshooting

Частые проблемы и решения

  1. Проблема: Окно закрывается сразу после запуска
    Решение: Используйте /k вместо /c

  2. Проблема: Путь к файлу содержит пробелы
    Решение: Используйте обратные кавычки:

    powershell
    Start-Process cmd.exe -ArgumentList "/k `"C:\Path With Spaces\script.bat`""
    
  3. Проблема: Требуются права администратора
    Решение: Добавьте -Verb RunAs

  4. Проблема: Команда не выполняется
    Решение: Проверьте путь к файлу и существование файла

Полезные команды для диагностики

powershell
# Проверить список процессов
Get-Process | Where-Object {$_.ProcessName -eq "cmd"}

# Убить процесс
Stop-Process -Name "cmd" -Force

# Запустить с отладочной информацией
Start-Process cmd.exe -ArgumentList "/k `"E:\script-hack.bat`"" -WindowStyle Maximized -Wait

Интеграция с вашим существующим script.bat

Если вы хотите объединить оба ваших скрипта в один PowerShell скрипт:

powershell
# combined-script.ps1
# Открываем CMD на весь экран
Start-Process cmd.exe -ArgumentList "/k `"E:\script-hack.bat`"" -WindowStyle Maximized

Затем вы можете вызвать этот скрипт из вашего batch файла:

batch
PowerShell -ExecutionPolicy Bypass -File "E:\combined-script.ps1"

Источники

  1. Microsoft Learn - Start-Process cmdlet
  2. SharePoint Diary - Run Batch File from PowerShell
  3. Stack Overflow - PowerShell launch script in new instance
  4. PDQ - Start-Process PowerShell Command
  5. Delft Stack - How to Run BAT File From Powershell Script

Заключение

Для решения вашей задачи по автоматизации открытия CMD окна и выполнения команд из script-hack.bat через PowerShell, рекомендуем использовать следующую основную команду:

powershell
Start-Process cmd.exe -ArgumentList "/k `"E:\script-hack.bat`"" -WindowStyle Maximized

Ключевые моменты:

  • Используйте /k для сохранения окна открытым после выполнения команд
  • Применяйте -WindowStyle Maximized для открытия окна на весь экран
  • Для путей с пробелами используйте обратные кавычки
  • При необходимости добавляйте -Verb RunAs для прав администратора

Этот подход позволит вам автоматически запускать ваш бесконечный цикл команд в максимизированном CMD окне через PowerShell, решая вашу задачу автоматизации.

Авторы
Проверено модерацией
Модерация