'Question about Variables in powershell script

I'm writing a script and I was wondering if there is a way to give a variable for example $a from a script firstscript.ps1 to an other script secondscript.ps1 executed by firstscript.ps1

To clarify what I'm saying :

I exec firstscript.ps1 it does different thing then it launch secondscript.ps1 on a remote computer and i would like the $a from to transfert firstscript.ps1 to secondscript.ps1

NB:I use psexec to exec the secondscript.ps1 remotely to a list of computer with admin right

I could write it in the second one but I want to avoid modification at the bare minimum



Solution 1:[1]

then it launch secondscript.ps1 on a remote computer and i would like the $a from to transfert firstscript.ps1 to secondscript.ps1

Assuming you invoke the script remotely using Invoke-Command, pass arguments to the script via the -ArgumentList parameter:

## script1.ps1

# assign value to `$a`
$a = $(...)

# ...

# invoke script2.ps1 on remote machine with $a passed as first argument
Invoke-Command -ComputerName $nameOfRemoteComputer -FilePath path\to\script2.ps1 -ArgumentList $a

Then in script2.ps1, either read the argument value from $args[0]:

## script2.ps1

$a = $args[0] # grab argument value passed by script1.ps1

# work with $a here ...

... or declare a param() block with a parameter that the argument can be bound to:

## script2.ps1
param(
    $a # Let the runtime bind the argument value passed by script1.ps1 to this parameter variable
)

# work with $a here ...

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Mathias R. Jessen