Нет необходимости в разделении параметров или даже в операторе вызова, решая двойные кавычки:
ел бы написать сценарий управления контейнерами Docker, но мне трудно передавать переменные PS в команды Docker, в частности из-за различий в формате пути.
Следующая строка (*) и лайки, которые вы можете найтиВот делать работу, однако они неудобны:
Start-Process docker " run --rm -v $($env:USERPROFILE -replace '\\','/'):/data alpine ls /data"
Действительно, PSStart-Process
идеально подходит для установщика MSI, где вам нужно видеть всплывающее окно и контролировать его уровень видимости, чтобы понять, что происходит установщик без вывода сообщений. Вместо этого вы не хотите запускать новое окно каждый раз, когда запускаете консольное приложение, особенно в Docker, где вы взаимодействуете с вызывающей стороной и вызываемой оболочкой.
к«Выполнить команду, сценарий или блок сценариев» PS специально предоставляет&
, «оператор вызова, также известный как« оператор вызова »», Однако я безуспешно пытался:
& docker run --rm -v $($env:USERPROFILE -replace '\\','/'):/data alpine ls /data
Cmd.exe
было бы проще, но PowerShell является официальной оболочкой для взаимодействия сДокер для Windows, Таким образом, должен быть надежный способ передачи переменных аргументов командам Docker.
(*) Переключатель удаления-rm
используется здесь только для того, чтобы поэкспериментировать с ответом, избегая загромождения вашего рабочего пространства. Конечно, я обычно не уничтожаю контейнер, как только я его создаю, а скорее взаимодействую с ним-ti
.
РЕДАКТИРОВАТЬ
@AnsgarWiechers предлагаетразбрызгивание параметров в комментарии:
$params = 'run', '--rm', "-v $($env:USERPROFILE -replace '\\','/'):/data", 'alpine', 'ls /data'
docker @params
Предполагая, что я реализую это правильно, он тоже не работает и дает:
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: invalid mode: /data.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.