Invoke-Command с параметрами в качестве задания - PullRequest
0 голосов
/ 01 июня 2018

Я могу выполнить приведенную ниже команду без каких-либо проблем:

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, но я также получаю ошибки.

1 Ответ

0 голосов
/ 01 июня 2018

Вы должны передать список аргументов в виде массива

[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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...