4

У меня есть скрипт PowerShell для установки программного обеспечения на удаленные компьютеры.

На сегодняшний день я успешно использую следующий код:

$prog = "ping"
$arg = "localhost"
$computername = "MACHINE01"
invoke-command -computername $computername {param($p,$a)& $p $a} -ArgumentList $prog,$arg

Теперь мне нужно установить MSI, например. msiexec /ic:\file.msi /passive.

Я не могу заставить MSIEXEC обрабатывать все после 'MSIEXEC' как параметры. Вместо этого PowerShell просто пытается выполнить его как одну большую команду. Я пробовал множество вещей, в основном связанных с размещением буквальных кавычек, но не могу заставить это работать.

Теперь я отказался от оператора вызова (&) в пользу «Start-Process», у которого есть параметр «-ArgumentList». MSI теперь выполняется правильно. Большой!

invoke-command -computername $computername {param($p,$a) start-process $p -argumentlist $a -nonewwindow -wait -redirectstandardoutput c:\output.txt; get-content c:\output.txt} -ArgumentList $prog,$arg

Проблема с «Start-Process» заключается в том, что он не выдает консольный вывод при удаленном запуске с помощью «Invoke-Command». Мне пришлось прибегнуть к перенаправлению вывода в файл, а затем прочитать файл. Есть ли способ лучше?

1 ответ1

0

Я хотел бы попробовать передать его в командлет tee-object, а затем сохранить файл там, если нужно (я не знаю, сработает ли отправка вывода файла в $ null, очень жаль, что это не linux, и мы могли бы отправить его в /dev /null, но я отвлекся)

Это командлет тройного объекта http://technet.microsoft.com/en-us/library/ee177014.aspx

invoke-command -computername $computername {param($p,$a) start-process $p -argumentlist $a -nonewwindow -wait | tee-object -file c:\output.txt} -ArgumentList $prog,$arg

это непроверенный код, но это, как правило, то, что вы хотели бы.

invoke-command -computername $computername {param($p,$a) start-process $p -argumentlist $a -nonewwindow -wait | tee-object -file $null} -ArgumentList $prog,$arg

может работать как хорошо

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .