Как управлять графическим интерфейсом dcu-cli в удаленной работе powershell

В настоящее время я работаю над сценарием для обновления удаленной машины через Powershell, для этого я использую dcu-cli.exe.

Он отлично работает, если запущен непосредственно на локальной машине, например:

"C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe" /ApplyUpdates

Но при использовании в Invoke-Command скрипт зависает навсегда...

Итак, чтобы устранить неполадки в моем скрипте, я хотел бы увидеть живой вывод команды выше...

Когда вы запускаете dcu-cli.exe в cmd, вы видите ход выполнения в графическом интерфейсе cmd, есть ли какие-либо возможности перенаправить вывод в реальном времени в мою подсказку Powershell?

У меня также был бы вопрос относительно синтаксиса dcu-cli, так как вот мои мысли для полного обновления:

Invoke-command -computername $Computer -credential $CredObject -Scriptblock {
cmd /c start /wait "" "C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe" -argumentlist 
/configure -biosPassword="$usingBIOSPWD" ;
cmd /c start /wait "" "C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe" -argumentlist /ApplyUpdates }

Выше скрипт зависает без ошибок... Я бы хотел, чтобы он сначала сохранил пароль биоса из моих переменных скрипта, а затем запускал все обновления.

Проблема в том, что dcu-cli.exe иногда не принимает свои собственные переключатели (пока я пробую все возможные варианты... Start-process; cmd; &.....) Возможно ли при запуске cmd через powershell для увидеть живой вывод cmd?

Если я запускаю dcu-cli с cmd, он работает нормально, но я не уверен, как передать объект и переменную в пакет или любым другим способом, который позволил бы мне увидеть ход установки...

Любая помощь будет принята с благодарностью, так как я работаю над этим в течение нескольких недель, и я новичок в Powershell :)

PS: Да, я уже использовал Google об этом


person Mr. WoodyMan    schedule 19.02.2020    source источник


Ответы (1)


Я не знаю, пытаетесь ли вы все еще понять это... но мне удалось вызвать DCU на удаленной машине с помощью планировщика заданий. Эти простые несколько строк в PowerShell создают задачу на машине с триггером в текущее время + 1 минуту с привилегиями SYSTEM:

$Trigger = New-ScheduledTaskTrigger -Once -At $(Get-Date).AddMinutes(1)
$User = "SYSTEM"
$Actions = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "Start-Process 'C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe' -ArgumentList '/scan -report=`"C:\Temp\`"'"
$Settings = New-ScheduledTaskSettingsSet -ExecutionTimeLimit "01:00" -AllowStartIfOnBatteries
$Task = New-ScheduledTask -Action $Actions -Trigger $Trigger -Settings $Settings -Description 'Update process'
Register-ScheduledTask -TaskName "DCU Updates Scan" -InputObject $Task -User $User -Force

-report="C:\Temp\"' перенаправляет вывод в указанное место.

Просто измените список аргументов в New-ScheduledTaskAction, и вы должны быть готовы к работе.

Ваше здоровье

person UniverseCitiz3n    schedule 29.07.2020