I am trying to execute following PowerShell script from Server-2 against Server-1 (i.e. Remote server):
$DBServer = \'Server1\'
Invoke-Command -ComputerNam
I will not implement your code but will explain through a simple example so that you can implement it accordingly.
Suppose you need to start a website hosted on IIS. I have declared the variables. In the function u can assign values to variables as, it should have been like this, instead of $args[0], it should have been $abc, but I have I assigned the value of variable runtime. u can also assign multiple values by separating it with a comma, like
-ScriptBlock {Start-Website $args[0] $args[1]} -ArgumentList $xyz, $abc
Code Snippet
$User="UserName"
$Password="password"
$abc="MyWebsite"
$xyz="MyWebsite2"
$ComputerName = "MyComputerName"
$pword = ConvertTo-SecureString -String $Password -AsPlainText -Force
$credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $User, $pword
function StartIIS($abc)
{
Invoke-Command -ComputerName $ComputerName -Credential $credential -ScriptBlock {Start-Website $args[0]} ArgumentList $abc
}
StartIIS($abc)
All,
So, finally I figured it out how to pass local variable to -ScriptBlock
while using with the Invoke-Command
against the remote server.
Here is the code I used and it worked like a charm:
Write-Host "Workflow command was: "$HaloSourceCommandLine
Invoke-Command -ComputerName $DBServer -ScriptBlock {
param ([string] $t1 = $HaloSourceCommandLine, [string] $t2 = $HaloSourceExecutableLocation)
$status = Start-Process $t2 $t1 -Wait -PassThru
$ExitCodeInfo = $status.ExitCode
if ($ExitCodeInfo -ne 0)
{
Throw "The command exited with error code: $test2"
}
else
{
Write-host "Workflow executed successfully."
}
} -ArgumentList $HaloSourceCommandLine,$HaloSourceExecutableLocation
Hopefully this will help to others if they are having issue executing -ScriptBlock
against remote server via Invoke-Command
Thanks, HP