繁体   English   中英

以参数作为作业的Invoke-Command

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM