How to pass local variable to Invoke-Command's -ScriptBlock

孤街浪徒 提交于 2019-11-29 12:34:50

All,
So, finally I figured it out how to pass local variable to -ScriptBlock while using with the Invoke-Commandagainst 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

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)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!