Нет необходимости в разделении параметров или даже в операторе вызова, решая двойные кавычки:

ел бы написать сценарий управления контейнерами 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'.