9

i'm trying to run a script which will run another powershell script. i need the first script to continue only after the other one is over. something like:

start Copy.ps1 wait till Copy.ps1 is done
continue with the script

tried using the Invoke-Expression but it doesn't have wait parameter.

2 Answers 2

6

From https://community.idera.com/database-tools/powershell/ask_the_experts/f/learn_powershell_from_don_jones-24/19166/wait-for-powershell-script-to-complete-before-starting-another-script

You can just put an ampersand in front of the script name, e.g.

& .\Copy.ps1
Sign up to request clarification or add additional context in comments.

Comments

2

I think you easily can do it by calling the file like this:

<#
  here is some awesome code
#>

# Call P$ Script here
& C:\Path\To\CopyScript.ps1

<#
  awesome code continues here
#>

it will call the whole script in Copy.ps1 and continues after copy.ps1 finished.

Other method is you set the whole script in copy.ps1 into a function.

in CopyScript.ps1:

function MyCopyFunction(){

  # all code inside the Copy.ps1 is here
   
}

And in your new File:

# Call P$ Script here
& C:\Path\To\CopyScript.ps1

# then call the function
MyCopyFunction

Greetz Eldo.Ob

3 Comments

Unless you specifically want to run the script directly in the caller's scope - so as to load function, alias, variable definitions from there - you should use &, the call operator, instead of ., the dot-sourcing operator.
In cases where the dot-sourcing operator is called for, follow it by a space to avoid the awkward need for wrapping the script path in (...): . C:\Path\To\Copy.ps1
Thanks for updating, but now the (...) is superfluous and it's still not clear why you're dot-sourcing (. ; running in the same scope - rather than calling (& ; running in a child scope). Also note that to-end-of-line comments in PowerShell use #, not //.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.