# asdfescape=` FROM mcr.microsoft.com/windows:ltsc2019-amd64 ARG ARCHITECTURE=x64 ARG PS_VERSION=7.3.8 ARG PS_PACKAGE_FILE=PowerShell-$PS_VERSION-win-$ARCHITECTURE.msi ARG PS_PACKAGE_URL=https://github.com/PowerShell/PowerShell/releases/download/v$PS_VERSION/$PS_PACKAGE_FILE ARG ACE_PACKAGE_FILE=AccessDatabaseEngine_x64.exe ARG ACE_PACKAGE_URL=https://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/$ACE_PACKAGE_FILE ARG ACE_SILENT_INSTALL_ARG=/passive ENV DOTNET_CLI_TELEMETRY_OPTOUT=true \ DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true \ DOTNET_NOLOGO=true # Ignore any Development.props file by default. ENV IgnoreLocalRepositories=true # # Install PowerShell: # SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] RUN Invoke-WebRequest $env:PS_PACKAGE_URL -OutFile $env:PS_PACKAGE_FILE; \ msiexec.exe /package $env:PS_PACKAGE_FILE /quiet ADD_PATH=1 DISABLE_TELEMETRY=1 | Out-Default SHELL ["pwsh", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] RUN $PSVersionTable; \ Set-ExecutionPolicy Unrestricted # # Install .NET SDK: # COPY global.json dotnet-install-global.json RUN echo '.NET Information Before SDK Install'; \ try { dotnet --info } catch { echo "No $env:ARCHITECTURE .NET SDK installed." } \ echo 'Install .NET SDK'; \ &([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing 'https://dot.net/v1/dotnet-install.ps1'))) -JSonFile dotnet-install-global.json -Architecture $env:ARCHITECTURE -InstallDir "C:\dotnet_$env:ARCHITECTURE" -Verbose && \ [Environment]::SetEnvironmentVariable('Path', $env:Path, 'Machine'); \ $env:Path; \ try { dotnet --info } catch { echo "No $env:ARCHITECTURE .NET SDK installed." } # # Install Access Runtime: # RUN Invoke-WebRequest $env:ACE_PACKAGE_URL -OutFile $env:ACE_PACKAGE_FILE && \ & ".\$env:ACE_PACKAGE_FILE" $env:ACE_SILENT_INSTALL_ARG | Out-Default && \ 'DAO:'; \ Get-ChildItem 'HKLM:\SOFTWARE\Classes\DAO.DBEngine*' | Select-Object; \ 'OLE DB:'; \ foreach ($provider in [System.Data.OleDb.OleDbEnumerator]::GetRootEnumerator()) { \ $v = New-Object PSObject; \ for ($i = 0; $i -lt $provider.FieldCount; $i++) { \ Add-Member -in $v NoteProperty $provider.GetName($i) $provider.GetValue($i); \ } \ $v; \ } \ echo "Architecture: $([Environment]::Is64BitProcess ? 'x64' : 'x86')" RUN mkdir 'C:\Source' WORKDIR 'C:\Source' ENTRYPOINT ["pwsh", "-c"] CMD ["pwsh"]