首页 > 解决方案 > 如何在 powershell 远程作业中管理 dcu-cli GUI

问题描述

我目前正在编写一个脚本来通过 Powershell 更新远程机器,因为我正在使用 dcu-cli.exe。

如果直接在本地机器上运行,它可以正常工作,例如:

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

但是当在 Invoke-Command 中使用时,脚本会永远卡住......

因此,为了对我的脚本进行故障排除,我想查看上面命令的实时输出......

当您在 cmd 中运行 dcu-cli.exe 时,您会在 cmd GUI 中看到进度,是否有可能将实时输出重定向到我的 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 }

上面,脚本没有错误……我希望它首先从我的脚本变量中保存 bios 密码,然后运行所有更新。

问题是 dcu-cli.exe 有时不接受他自己的开关(当我尝试各种可能性时...Start-process ; cmd ; &.....)查看 cmd 实时输出?

如果我使用 cmd 运行 dcu-cli 它运行良好,但我不确定如何将对象和变量传递到批处理中或任何其他可以让我看到安装进度的方式...

任何帮助将不胜感激,因为我已经为此工作了数周,而且我是 Powershell 的新手 :)

PS:是的,我确实已经使用谷歌了

标签: powershelldriverpowershell-remoting

解决方案


我不知道你是否还在想办法……但我已经设法使用任务计划程序在远程机器上调用 DCU。那些简单的几行在PowerShell当前时间触发的机器上创建任务 + 1 分钟与系统特权:

$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\"'将输出重定向到指定位置。

只需修改 agument 列表New-ScheduledTaskAction,您就可以开始使用了。

干杯


推荐阅读