gpt4 book ai didi

powershell - 调用命令和 msiexec

转载 作者:行者123 更新时间:2023-12-02 23:28:52 24 4
gpt4 key购买 nike

我正在尝试使用 Invoke-Command 删除远程计算机上的应用程序cmdlet 但它不起作用。

这是我的脚本:

  Invoke-Command -ComputerName "Computername" -Verbose -ScriptBlock {
msiexec.exe /x '{4ADBF5BE-7CAF-4193-A1F9-AM6820E68569}' /qn /passive
}

在这种情况下是否有任何可靠、可行的替代方案?

最佳答案

这不使用 Invoke-Command 或 MSIExec,但它是一种功能性卸载方法,用于使用 WMI 删除远程计算机上的应用程序,用于在 WMI 中注册的任何内容(应该是通过 msiexec 安装的任何内容)。

(Get-WmiObject -Class Win32_product -ComputerName ComputerName -Filter {IdentifyingNumber LIKE '{4ADBF5BE-7CAF-4193-A1F9-AM6820E68569}'}).uninstall()

此外,如果您有几台计算机可以执行此操作,则可以将其放入 ForEach 循环中。如果您在 WMI 中列出了 Name、IdentifyingNumber 和 Version,则可以使用以下上下文加快速度(使用 AT&T Connect Participant Application v9.0.82):
$App="IdentifyingNumber=`"`{1F3A6960-8470-4C84-820C-EBFFAF4DA580`}`",Name=`"AT&T Connect Participant Application v9.0.82`",version=`"9.0.82`""
([WMI]\\ComputerName\root\cimv2:Win32_Product.$App).Uninstall()

是的,$App 字符串被可怕地转义了,但这是由于 WMI 要求使用花括号和双引号对字符串进行格式化的方式,而不是什么。这对于单个卸载并不完全有用,因为它需要您预先获取所有信息并格式化 key 字符串。但是,如果您要从 30 台机器上删除一个软件,那就更好了。您只需从我的第一个命令中删除 .Uninstall() 方法即可获取所有这些信息,所以...
Get-WmiObject -Class Win32_product -ComputerName RemoteComputer -Filter {IdentifyingNumber LIKE '{1F3A6960-8470-4C84-820C-EBFFAF4DA580}'}

会吐出类似的东西:
IdentifyingNumber : {1F3A6960-8470-4C84-820C-EBFFAF4DA580}
Name : AT&T Connect Participant Application v9.0.82
Vendor : AT&T Inc.
Version : 9.0.82
Caption : AT&T Connect Participant Application v9.0.82

也可以通过将过滤器更改为“{Name LIKE '%AT&T Connect%'} ,尽管您可能希望将其传送到 Format-Table 以使其可读。我用了:
gwmi -class win32_product -computername RemoteComputer|ft IdentifyingNumber,Name,Version

可以在此 link 上找到有关此内容的更多信息。

关于powershell - 调用命令和 msiexec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22257663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com