S.D.
S.D.

Reputation: 1201

how to pass command line parameters to invoked session in powershell 2.0

How can i pass command line parameters to a session which is invoked using 'invoke-command' in powershell 2.0

my script:

param(
    [string]$hostname = 'my_server_name'
)

function createSession($hostname){
    return New-PSSession -ComputerName $hostname -Credential $env:UserDomain\$env:UserName
}
$session = createSession $hostname
invoke-command -Session $session -ScriptBlock {
   write-host $hostname
   write-host $using:hostname
   write-host $script:hostname 
   write-host '**test text**'

}
    Exit-PSSession

Output: (I'm getting empty string if i print the parameter value directly.)

**test text**

Upvotes: 0

Views: 993

Answers (2)

Prasoon Karunan V
Prasoon Karunan V

Reputation: 3063

use param block

$hostname = $env:computername
Invoke-Command -ScriptBlock { param($hostname)
    Write-OutPut $hostname
} -ArgumentList $hostname

Upvotes: 1

Chetan Kulkarni
Chetan Kulkarni

Reputation: 404

param(
    [string]$hostname = 'my_server_name'
)

function createSession($hostname){
    return New-PSSession -ComputerName $hostname -Credential $env:UserDomain\$env:UserName
}
$session = createSession $hostname
invoke-command -Session $session -ScriptBlock {
$hostname=$using:hostname

or

$hostname=$script:hostname
   write-host $hostname
   write-host '**test text**'

}
    Exit-PSSession

Hope any one of the above helps,If Not Please look at the concept of scoping variables in powershell,May be they will help Powershell variable scoping

Upvotes: 1

Related Questions