【发布时间】:2016-11-08 10:34:06
【问题描述】:
我有一个 PowerShell 脚本,它启动另一个脚本并将参数传递给它。
我使用Start-Job 执行此操作,因为我不想等到第二个脚本完成:
脚本A:
start-job -name EnableAutoUnlock -scriptblock {Invoke-Command -script { C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "\\Path\To\Script\EnableAutoUnlock.ps1" $VolumeDriveLetter }}
脚本B:
[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 }}
编辑:ScriptB 将传递的变量输出为空
要让变量传递工作,我缺少什么?
【问题讨论】:
标签: powershell parameter-passing start-job