これは Invoke-Command や MSIExec を使用しませんが、WMI に登録されたもの (msiexec を介してインストールされたもの) に対して、WMI を使用してリモート マシン上のアプリケーションを削除するための機能的なアンインストール方法です。
(Get-WmiObject -Class Win32_product -ComputerName ComputerName -Filter {IdentifyingNumber LIKE '{4ADBF5BE-7CAF-4193-A1F9-AM6820E68569}'}).uninstall()
さらに、複数のコンピューターで実行する場合は、ForEach ループに入れることができます。Name、IdentifyNumber、および Version が WMI にリストされている場合は、次のコンテキストを使用して大幅に高速化できます (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 が文字列を中かっこや二重引用符などでフォーマットする必要があるためです。これは、すべての情報を前もって取得し、キー文字列をフォーマットする必要があるため、1 回のアンインストールではまったく役に立ちません。ただし、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%'} のようなものに変更することで、名前または部分的な名前で使用することもできます。または、-Filter を完全にオフのままにすることで、WMI にクエリを実行して、登録されているすべてのアプリケーションを一覧表示することもできます。 、おそらくそれを Format-Table にパイプして読み取り可能にしたいでしょう。私が使用した:
gwmi -class win32_product -computername RemoteComputer|ft IdentifyingNumber,Name,Version
これに関する詳細については、このリンクを参照してください。