使用基于Windows服务器1709的容器内的args运行可执行文件

时间:2018-06-08 15:52:25

标签: powershell docker dockerfile windows-server-2016

我已经基于Windows Server 1709为容器创建了图像。 在映像构建期间,我运行powershell脚本(在dockerfile中)

RUN powershell -NoProfile "& ""C:\...\Install.ps1"""

在此脚本中,我尝试使用参数

运行可执行文件
& "$PSScriptRoot\example.exe" /install /q

问题在于参数未应用于可执行文件。 但是,如果我在容器内的powershell中手动运行此命令,那么它可以正常工作。 所以我试图以不同的方式做到这一点

Start-Process -FilePath "$PSScriptRoot\example.exe" -ArgumentList @("/install", "/q")


cmd /c "C:\...\example.exe" /install /q


cmd.exe /c "$PSScriptRoot\example.bat"

在PowerShell手动执行期间一切正常,脚本执行期间没有人。这个列表中没有包含许多不同的变体。

请注意!容器内部的进程总是在运行,但是当我们通过脚本执行时,它们不是由参数配置的。

PS C:\> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.16299.431
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.16299.431
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

1 个答案:

答案 0 :(得分:-1)

尝试这种方式:

Start-Process -FilePath "$PSScriptRoot\example.exe" -ArgumentList "/install","/q"

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-5.1上的“示例7”