由于混乱的组策略对象,多台计算机在不应该安装的时候安装了 TightVNC。GPO 已消失,因此仅从那里删除软件不是我所知道的选项。因此,我正在编写脚本以便从计算机列表中删除 PowerShell。
这是我的脚本:
if ($args.length -ne 1) {
Write-Warning "Must pass computer name, ending script.";
break
}
$pc = $args[0]
Write-Output "Scanning $pc for TightVNC...."
$prod = wmic /node:$pc product get name | where {$_ -match "TightVNC"}
if ($prod) {
Write-Output "Found TightVNC, attempting uninstall...."
wmic /node:$pc product where name="TightVNC" call uninstall
} else {
Write-Warning "Could not find TightVNC on $pc."
}
Write-Output "Done."
现在,我的输出如下:
Scanning [computer] for TightVNC....
Found TightVNC, attempting uninstall....
ERROR:
Description = Invalid query
Done.
但是,如果我将第二个 wmic 行复制并粘贴到提升的命令提示符中并将 $pc 替换为 [computer],它就可以正常工作。我的 PowerShell 窗口被提升了。
有谁知道为什么我的剧本会适合这个?我知道第一个 wmic 命令确实需要很长时间才能完成(> = 5 分钟),但它在实际工作的第二个命令窗口中也是如此。我很感激对此的任何见解。
注意:我使用 wmic 是因为这里的计算机没有正确配置为远程 PowerShell 访问。它在我要做的事情清单上。