RUN Powershell Script in Docker Container From Host Powershell Script

12,303

Do not use the -ti flags to start an interactive session, just execute the script directly via the docker exec command

docker exec website powershell -command "C:\inetpub\wwwroot\addApplication.ps1"
Share:
12,303
Usama Saleem
Author by

Usama Saleem

Updated on June 24, 2022

Comments

  • Usama Saleem
    Usama Saleem over 1 year

    I have a powershell script in host which copy some files and starts the container.

    #Copy File
    docker cp "D:\addApplication.ps1" website:/inetpub/wwwroot/
    
    #Start Container
    docker start website
    Write-Host 'Process has started'
    
    #Execute Container
    docker exec -ti website powershell
    
    #Run Script
    Invoke-Expression "C:\inetpub\wwwroot\addApplication.ps1"
    

    Second last command executes fine but last command will only execute when I exit the container session and returns error(File Not Found which is because it finds that file on host)

    Question: Is there anyway I can execute the command in container session from the script. Or execute any command from script in any process(confused)

    Any help is appreciated.

    Thanks

    • arco444
      arco444 about 6 years
      Invoke-Expression is not the correct command to run a script. You should use & "C:\inetpub\wwwroot\addApplication.ps1"
    • Usama Saleem
      Usama Saleem about 6 years
      the problem is...when it executes the second last command it starts the container session and did not execute the last command until I exit the session...I want to run the last command in container session...not in the host
    • arco444
      arco444 about 6 years
      Then don't run interactively. Try docker exec website powershell -command "C:\inetpub\wwwroot\addApplication.ps1"
    • Usama Saleem
      Usama Saleem about 6 years
      Thanks for the quick response. It worked...