powershell - Start-Job scriptblock passing of variable -
i got powershell script starts script , passes parameters it. start-job
not want wait until second script finished:
scripta:
start-job -name enableautounlock -scriptblock {invoke-command -script { c:\windows\system32\windowspowershell\v1.0\powershell.exe "\\path\to\script\enableautounlock.ps1" $volumedriveletter }}
scriptb:
[cmdletbinding()] param ( [parameter(position=0)] [string]$drive ) <do stuff $drive here>
$volumedriveletter
drive letter gets processed i.e. "c:"
unfortunately passing of parameter variable not work although $volumedriveletter
has expected value typing work correctly.
works:
start-job -name enableautounlock -scriptblock {invoke-command -script { c:\windows\system32\windowspowershell\v1.0\powershell.exe "\\path\to\script\enableautounlock.ps1" c: }}
does not work
$volumedriveletter = "c:" start-job -name enableautounlock -scriptblock {invoke-command -script { c:\windows\system32\windowspowershell\v1.0\powershell.exe "\\path\to\script\enableautounlock.ps1" $volumedriveletter }}
edit: scriptb outputs passed variable empty
what missing passing of variable work?
you can use using
prefix access value within scriptblock:
$volumedriveletter = "c:" start-job -name enableautounlock -scriptblock {invoke-command -script { c:\windows\system32\windowspowershell\v1.0\powershell.exe "\\path\to\script\enableautounlock.ps1" $using:volumedriveletter }}
or use -argumentlist
parameter , pass parameter scriptblock:
start-job -name enableautounlock -scriptblock { param($volumedriveletter) write-host $volumedriveletter } -argumentlist $volumedriveletter
Comments
Post a Comment