У меня есть сценарий PowerShell, который запускает другой скрипт и передает ему параметры. Я делаю это с Start-Job
, как я не хочу ждать, пока второй сценарий не закончен:Start-Job scriptblock pass variable
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 Выходы переданные переменные, как пустой
Что я упускаю, чтобы получить прохождение Переменного работать?
Спасибо за ваш ответ, но Я просто попробовал это и, к сожалению, не работает (так же, как и раньше, параметр, полученный скриптомB, просто пуст) –
Спасибо, я использовал отредактированный ответ, и он отлично работал –