[英]Invoke-Command with parameters as a job
我可以毫无问题地运行以下命令:
Invoke-Command -ScriptBlock {
Param($rgName,$VMname)
Get-AzureRmVM -Name $VMname -ResourceGroupName $rgName
} -ArgumentList $rgname,$vmname
但是我真正需要的是能够将命令作为作业运行,因此我尝试了以下操作:
Invoke-Command -ScriptBlock {
Param($rgName,$VMname)
Get-AzureRmVM -Name $VMname -ResourceGroupName $rgName
} -ArgumentList $rgname,$vmname -AsJob
我收到以下错误:
Invoke-Command : Parameter set cannot be resolved using the specified named parameters. At line:1 char:1 + Invoke-Command -ScriptBlock { param($rgName,$VMname) Get-AzureRmVM -N ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Invoke-Command], ParameterBindingException + FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.PowerShell.Commands.InvokeCommandCommand
我也尝试使用Start-Job
运行命令,但是我也收到错误。
您必须将参数列表作为数组传递
[Array]$ArgumentList = @('rg','vm')
[ScriptBlock]$ScriptBlock = {
Param(
[string]$rgName,
[string]$VMname
)
Get-AzureRmVM -Name $VMname -ResourceGroupName $rgName
}
$nj = Invoke-Command -ScriptBlock $ScriptBlock -ArgumentList $ArgumentList -ComputerName $env:COMPUTERNAME -Credential (Get-Credential) -JobName 'NewJobName' |Wait-Job
有趣的是,我发现必须指定-ComputerName [-Credntial]才能使其正常运行- 在上面进行了修改 。
获得作业的结果,如下所示...
$nj | Receive-Job
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.