我正在尝试创建一个PowerShell脚本,该脚本从txt文件中获取计算机名称,检查注册表以查看当前版本的Flash的安装位置,如果它小于18.0.0.203,则运行卸载exe。这是我一直在尝试的:
appendChild
它可以很好地导出CSV,但是所有已安装的列都说"正在删除"即使它是当前版本。关于我做错了什么的任何想法?谢谢!
答案 0 :(得分:0)
不是打开远程注册表项并运行cmd / c,而是为什么不创建[scriptblock]并将其传递给Invoke-Command。
AsJob然后回来查看结果。
[scriptblock]$code = {
$uninst = gci "C:\Windows\System32\Macromed\Flash" -Filter "*.exe" | ?{ $_.Name -ne "FlashUtil64_18_0_0_204_ActiveX.exe" -and $_.Name -like "FlashUtil64_18_0_0_*_ActiveX.exe" }
foreach($flash in $uninst) {
Write-Host $flash.FullName
$proc = New-Object System.Diagnostics.Process
$proc.StartInfo.FileName = $flash.FullName
$proc.StartInfo.Arguments = "-uninstall"
$proc.Start()
$proc.WaitForExit()
Write-Host ("Uninstalling {0} from {1}" -f $flash.BaseName,$env:COMPUTERNAME)
}
}
Invoke-Command -ScriptBlock $code -ComputerName frmxncsge01 -AsJob
然后稍后回来和Get-Job |接收 - 工作 - 保持并查看结果。