2016-11-08 4 views
1

다른 스크립트를 시작하고 매개 변수를 전달하는 PowerShell 스크립트가 있습니다.변수의 시작 - 작업 스크립트 블록 전달

스크립 :

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 단지이다 내가 두 번째 스크립트가 완료 될 때까지 기다리고 싶지 않는 나는 Start-Job이 작업을 수행 처리 된 드라이브 문자 (예 : "C :")

불행히도 $VolumeDriveLetter에 예상 값이 있지만 매개 변수를 변수로 전달하는 것이 작동하지 않지만 입력하면 올바르게 작동합니다.

작품 : ScriptB 출력이 비어

내가 놓친 거지로 전달 된 변수는 변수의 통과 얻을 :

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 작동하지 않습니다 일하다?

답변

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에 의해 recieved 매개 변수가 그냥 비어 있습니다) 작동하지 않습니다 시도했습니다 –

+0

고마워, 내가 편집 된 답변을 사용하고 완벽하게 일했습니다 –