# Select Template and add ID for easy selection
$templates = Get-Folder Templates01 |
Get-Template |
Select name |
% {$counter = -1} {
$counter++;
$_ | Add-Member -Name Template_ID -Value $counter -MemberType NoteProperty -PassThru
}
$templates | ft -Auto
$MyTemplate = Read-Host "select VM Template_ID"
$VMTemplate = $templates[$MyTemplate]
$VMNAME = Read-Host "Specify VM Name"
New-Vm -Name $VMNAME -Template $vmtemplate.Name
上面的脚本效果很好。我现在想使用
Start-Job
在后台运行它,所以我将其修改为:# Select Template and add ID for easy selection
$templates = Get-Folder Templates01 |
Get-Template |
Select name |
% {$counter = -1} {
$counter++;
$_ | Add-Member -Name Template_ID -Value $counter -MemberType NoteProperty -PassThru
}
$templates | ft -Auto
$MyTemplate = Read-Host "select VM Template_ID"
$VMTemplate = $templates[$MyTemplate]
$VMNAME = Read-Host "Specify VM Name"
$scriptblock = {
Param( $1, $2 )
New-Vm -Name $1 -Template $2
}
Start-Job -ScriptBlock $scriptblock -ArgumentList $vmname $vmtemplate.Name
我得到这个错误:
开始作业:无法绑定(bind)参数“InitializationScript”。不能
将类型为“System.String”的“template01”值转换为类型
“System.Management.Automation.ScriptBlock”。
在线:1个字符:59个
+ ...-作业-ScriptBlock $ scriptblock -ArgumentList $ vmname $ vmtemplate.Name
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo:InvalidArgument:(:) [开始作业],ParameterBindingException
+ FullyQualifiedErrorId:CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.StartJobCommand
我该如何解决?
最佳答案
检查一下,我知道您需要一点更改代码:)
Start-Job -ScriptBlock {Get-ChildItem $args[0],$args[1] } -ArgumentList $a,$b
关于powershell - 如何将变量传递给Start-Job?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41764926/