2016-11-08 7 views
1

別のスクリプトを起動してパラメータを渡すPowerShellスクリプトがあります。 私は2番目のスクリプトが終了するまで待ちたくないと私はStart-Jobでこれを行う:変数の開始ジョブスクリプトブロックの受け渡し

の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 with $drive here> 

$VolumeDriveLetterだけです処理されるドライブレター、つまり「C:」

残念ながら、$VolumeDriveLetterには期待値がありますが、正しく入力されても、変数によるパラメータの受け渡しは機能しません。

作品:

start-job -name EnableAutoUnlock -scriptblock {Invoke-Command -script { C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "\\Path\To\Script\EnableAutoUnlock.ps1" C: }} 

$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出力渡された変数を、私は、変数の受け渡しを取得するために何をしないのです働く?

答えて

1

あなたはスクリプトブロック内の値にアクセスするためにusing接頭辞を使用することができます。

$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 }} 

それとも-ArgumentListパラメータを使用してスクリプトブロックにパラメータを渡す:あなたの答えのための

start-job -name EnableAutoUnlock -scriptblock { 
    Param($VolumeDriveLetter) 
    Write-Host $VolumeDriveLetter 
} -ArgumentList $VolumeDriveLetter 
+0

おかげでなく、私はちょうどそれを試み、残念ながらそれは動作しません(前と同じ、scriptBが受け取ったパラメータは空です) –

+0

ありがとう、私は編集された答えを使用し、それは完全に働いた –

関連する問題