2012-03-30 9 views
0

Win2k3またはWin2k8を実行しているサーバーから非Microsoft MSPを削除しようとしています。 「インストールされたアップデートの表示」を選択すると、アップデートは「プログラムの追加と削除」に表示されます。しかし、私はMSP GUIDを取得する方法を見つけることができないようです。powershellを使用してWindows以外のMSPパッケージを削除する

私はこの記事で発見された

msiexec /i {GUID-OF-PRODUCT} MSIPATCHREMOVE={GUID_OF_PATCH} /qb 

を使用して、計画:how to remove the Patch from console

しかし、私は、コマンドラインからパッチGUIDを取得する方法はありません。誰かがこれのようなことをすることができましたか? Microsoftのパッチのためにこれを行う方法はたくさんありますが、これはMicrosoft以外のものなので、まだ可能だと思っています。 ありがとう、 Greg

答えて

0

Windows Installer comオブジェクトを使用して、パッチを列挙できます。

この記事をチェックしてください。それはあなたが必要な正確に何をしませんが、それはcomObject.types.ps1xmlはあなたが必要とするファイルを提供します。

http://www.snowland.se/2010/02/21/read-msi-information-with-powershell/

その後パッチを取得するには、この操作を行うことができます。

$installer_obj = New-Object -com WindowsInstaller.Installer; 
$patches = $installer_obj.InvokeParamProperty("PatchesEx", "Product-Code-GUID", "s-1-1-0", 7, 15); 

Product-Code-GUIDは、興味のある製品のGUIDです。私は製品のリストも列挙し、人間が読める名前(つまり、プログラムの追加と削除に表示されているもの) )。

$installer_obj = New-Object -com WindowsInstaller.Installer; 
$all_products = $installer_obj.GetProperty("Products"); 
foreach($product_code in $all_products) { 
    $product_name = $installer_obj.InvokeParamProperty("ProductInfo", $product_code, "ProductName") 
    if($product_name -eq "MySQL Server 5.1") { 
     $interesting_product_code = $product_code; 
    } 
} 
$patches = $installer_obj.InvokeParamProperty("PatchesEx", $interesting_product_code, "s-1-1-0", 7, 15); 

あなたが取るどちらのルート、今はちょうど$パッチをループする必要があり、あなたは$のinteresting_product_codeのための文字列リテラルを使用することを選択している場合は、適切な引数(とコマンドラインからのmsiexecを呼び出すだけ交換してください文字列リテラルのGUIDを持つ変数と連結):。

foreach($patch in $patches) {     
    $patch_code = $patch.GetProperty("PatchCode");        
    $argument_list = "/I" + $interesting_product_code + " MSIPATCHREMOVE=$patch_code /qb /norestart";  
    Start-Process -FilePath "msiexec.exe" -ArgumentList $argument_list -Wait; 
} 

ここでは、WindowsインストーラのCOMオブジェクトへの参照です。あなたもそれをいくつかの他の楽しいものを行うことができます:働くことができます

http://msdn.microsoft.com/en-us/library/windows/desktop/aa369432%28v=vs.85%29.aspx

希望、 アーロン

+0

を。しかし、答えを投票するのに十分な "評判"がありません。 – gregs

関連する問題