Обработка переменных во время сборки Windows Docker

Как я могу определить переменные в Dockerfile для образа Windows, чтобы они были доступны в последующих операторах RUN?

Мой тест Dockerfile выглядит так

FROM microsoft/windowsservercore

SHELL ["powershell", "-Command"]

ARG viaArg=value
ENV viaEnv="""value"""
RUN $viaShell=\"value\"
RUN echo """viaArg: $env:viaArg"""
RUN echo """viaEnv: $env:viaEnv"""
RUN echo """viaShell: $myusername"""
RUN echo """viaShell+env: $env:viaShell"""

при построении образа через

PS > docker build -t myImage .

только viaArg и viaEnv показывают (а) значение.

Первый пример здесь помещает несколько команд в одну строку, например

RUN $someVar=\"2.60.3\" ; echo $someVar

но наверняка должен быть другой путь.

Является ли использование пространства имен $env единственным возможным способом?

Как во всем этом участвует setx?

Примечание: я не пытаюсь передать переменные из командной строки, поэтому ARG уже может быть использован неправильно. И я не хочу постоянно устанавливать переменные, они должны существовать только во время сборки, поэтому они мне не нужны в реестре.

Используемые версии

PS > docker -v
Docker version 17.12.0-ce, build c97c6d6
PS > [System.Environment]::OSVersion.Version    
Major  Minor  Build  Revision
-----  -----  -----  --------
10     0      14393  0
PS > (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ReleaseId).ReleaseId
1607

person BNT    schedule 16.01.2018    source источник
comment
единственный способ - ENV or ARG, если вы хотите использовать его в своей среде, а не сохранять в реестре. В качестве последних команд вы можете удалить их в своем файле докеров, если это то, что вам нужно.   -  person Edwin    schedule 16.01.2018
comment
Вы пытаетесь передать переменную среды с вашего хоста в сборку?   -  person Gregory Suvalian    schedule 16.01.2018
comment
@GregorySuvalian нет, просто определите некоторые переменные, которые используются в более поздних операторах RUN, казалось, что для этого нельзя использовать пространство имен $end:, но @Edwin заявляет, что это единственная возможность. Вид связан с моим другим связанным вопросом.   -  person BNT    schedule 17.01.2018