Ваш второй пример не совсем прав, потому что вы должны испустить ScriptBlock
, чтобы позвонить по нему Invoke-Command
. Поэтому вместо того, чтобы на самом деле вызыватьRemove-Job
на локальном компьютере, вы должны передать его как ScriptBlock
на удаленный компьютер. Вот самый краткий путь я могу думать в тот момент, чтобы добиться того, что вы после:
27, 29 | % { Invoke-Command -Session $s -ScriptBlock { Remove-Job -Id $args[0]; } -ArgumentList $_; };
Даже если вы не явно выйти и показать код, это очевидно, что вы заранее создавая объект PowerShell Session (aka. PSSession
), перед вызовом Invoke-Command
. Вы также можете упростить ситуацию, не создавая PSSession
и просто используя Invoke-Command
с параметром -ComputerName
. Вот пример:
$ComputerList = @('server01.contoso.com', 'server02.contoso.com', 'server03.contoso.com');
Invoke-Command -ComputerName $ComputerList -ScriptBlock { Remove-Job -Id $args[0]; } -ArgumentList 27,29;
Примечание: Я также переехал Job
идентификаторы непосредственно в -ArgumentList
, а не обжигающе их я вообще стараюсь избегать использования трубопровода PowerShell, если это действительно не имеет смысла (например.. используя Where-Object
, Get-Member
, или Select-Object
). У каждого свой подход.
Спасибо за ответ. Я на самом деле пробовал это раньше, но у меня есть следующая ошибка: '' Невозможно проверить аргумент в параметре 'Id'. Аргумент пустой или пустой. Укажите аргумент , который не является пустым или пустым, а затем повторите попытку. + CategoryInfo: InvalidData: (:) [Remove-Job], ParameterBindingValidationException + FullyQualifiedErrorId: ParameterArgumentValidationError, Microsoft.PowerShell.Commands.Remov eJobCommand + PsComputerName: xxx.xx ... '' – joon
К сожалению, я не сделал проверить мой код, прежде чем я его разместил :) Я заметил, что я сделал не так. Поскольку «ScriptBlock» является отдельной областью, мы должны передать идентификатор «Job ID» через параметр «-ArgumentList» в 'Invoke-Command', а затем ссылаться на него через' $ args [0] '. Я обновил код соответствующим образом (после тестирования на этот раз) :) –
Еще раз спасибо за помощь. Я посмотрю, как работает '-ArgumentList'. – joon