Использование PSRemoting для установки обновлений Dell с помощью dcu-cli.exe - PullRequest
0 голосов
/ 19 февраля 2020

Во-первых, это не тот же вопрос, что и этот вопрос .

Я пытаюсь использовать PSRemoting для запуска dcu-cli.exe в удаленной системе, сначала для сбора номера версии, а затем на самом деле установить обновления. PSEXE C не вариант для меня. Я использую версию dcu-cli.exe 3.1. Сейчас я просто хочу получить выходные данные параметра /version.

Выполнение следующей команды из PowerShell на моем локальном компьютере приводит к следующему выводу:

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

Вывод:

Отображается информация о версии: Dell Command | Обновление v3.1 Программа вышла с кодом возврата: 0

Вот что я пробовал до сих пор. Если не указано иное, вывод выглядит следующим образом. Иногда выходные данные находятся в файле журнала (в зависимости от командной строки):

Произошла непредвиденная фатальная ошибка Программа закрылась с кодом возврата: 2

После просмотра Process Explorer он действительно работает, но что-то где-то идет не так, и я озадачен тем, что. Явные учетные данные не предоставляются, так как я запускаю сценарий от имени учетной записи администратора, и эта учетная запись существует и является администратором на удаленном компьютере.

Любая помощь приветствуется.

Попытки:

Invoke-Command -ComputerName $Destinations[0] -EnableNetworkAccess -ScriptBlock {& "C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe" /version}

Invoke-Command -ComputerName $Destinations[0] -EnableNetworkAccess -ScriptBlock {& cmd.exe /c '"C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe" /version'}

Invoke-Command -ComputerName $Destinations[0] -EnableNetworkAccess -ScriptBlock {& cmd.exe /c 'start "" /Wait "C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe" /version'}

Нет вывода


Invoke-Command -ComputerName $Destinations[0] -EnableNetworkAccess -ScriptBlock {& cmd.exe /c 'start "" /B /Wait "C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe" /version'}

$ScriptBlock={Start-Process -FilePath "C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe" -ArgumentList "/version" -Wait -Verb "RunAs"}
Invoke-Command -ComputerName $Destinations[0] -EnableNetworkAccess -ScriptBlock $ScriptBlock

Нет вывода


$ScriptBlock={Start-Process -FilePath "C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe" -ArgumentList "/version" -Wait -RedirectStandardOutput C:\temp\version.log}
Invoke-Command -ComputerName $Destinations[0] -EnableNetworkAccess -ScriptBlock $ScriptBlock

$ScriptBlock={Start-Process -FilePath "C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe" -ArgumentList "/version" -Wait -PassThru -RedirectStandardOutput C:\temp\version.log}
Invoke-Command -ComputerName $Destinations[0] -EnableNetworkAccess -ScriptBlock $ScriptBlock

Информация о процессе возвращается в дополнение к обычному ошибочному выводу.


$ScriptText=@'
$ProcessInfo=[System.Diagnostics.ProcessStartInfo]::new("C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe")
$ProcessInfo.RedirectStandardError=$true
$ProcessInfo.RedirectStandardOutput=$true
$ProcessInfo.UseShellExecute=$false
$ProcessInfo.Arguments="/version"
$Process=[System.Diagnostics.Process]::new()
$Process.StartInfo=$ProcessInfo
$Process.Start() > $null
$Version=$Process.StandardOutput.ReadToEnd()
$Process.WaitForExit()
$Version
'@
$ScriptBlock=[System.Management.Automation.ScriptBlock]::Create($ScriptText)
Invoke-Command -ComputerName $Destinations[0] -EnableNetworkAccess -ScriptBlock $ScriptBlock

$ScriptText=@'
$ProcessInfo=[System.Diagnostics.ProcessStartInfo]::new("C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe")
$ProcessInfo.RedirectStandardError=$true
$ProcessInfo.RedirectStandardOutput=$true
$ProcessInfo.UseShellExecute=$false
$ProcessInfo.Arguments="/version"
$ProcessInfo.Verb="RunAs"
$Process=[System.Diagnostics.Process]::new()
$Process.StartInfo=$ProcessInfo
$Process.Start() > $null
$Version=$Process.StandardOutput.ReadToEnd()
$Process.WaitForExit()
$Version
'@
$ScriptBlock=[System.Management.Automation.ScriptBlock]::Create($ScriptText)
Invoke-Command -ComputerName $Destinations[0] -EnableNetworkAccess -ScriptBlock $ScriptBlock
...