Приветствовать !

Сначала я хочу использовать PowerShell для создания cmd и поместить в него какую-нибудь команду

[CmdletBinding()]
param (
    [Parameter()]
    [string]
    $ParameterName
)

cmd /c "start cmd /k " $ParameterName

Это работает хорошо, когда я ввожу какое-то приглашение без пробела & 'C:\ex-sys\Program files\dre\dre.ps1' tasklist, но когда приглашение с пробелом, например &

'C:\ex-sys\Program files\dre\dre.ps1' 'F:\git hub\yt-dlp\yt-dlp (27).exe'

Это выводится в cmd

'F:\git' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

Что означает, что «F:\git» не является командой или какой-либо запускаемой летучей мышью. Очевидно, cmd пропускает мою цитату в PowerShell, так что я все равно могу решить эту проблему

1
123 123 16 Сен 2023 в 20:32
Кстати, когда я использую «C:\ex-sys\exe\yt-dlp.lnk -help», он может открыть cmd и запустить команду для меня
 – 
123 123
16 Сен 2023 в 20:32
Итак, напишите "$ParameterName".
 – 
Tim Roberts
16 Сен 2023 в 20:36
Почему вы запускаете cmd дважды? (в этом случае это должно быть cmd /c "start cmd /k "$ParameterName""). Почему бы просто не использовать cmd /k "$ParameterName"
 – 
Compo
16 Сен 2023 в 20:41
@Compo, cmd /k выполняется синхронно, в том же окне, т. е. берет на себя интерактивный сеанс PowerShell. Я предполагаю, что цель состоит в том, чтобы запустить интерактивный сеанс cmd.exe асинхронно в новом окне.
 – 
mklement0
16 Сен 2023 в 20:43

1 ответ

Следующий ответ хорошо работает в сценарии. Если вы хотите добавить параметр в командной строке с помощью & 'C:\ex-sys\Program files\dre\dre.ps1' '"F:\git hub\yt-dlp\yt-dlp (27).exe" --help', заключите параметр в двойные кавычки

0
123 123 17 Сен 2023 в 18:13