Sie können das Windows Installer-Objekt com, um die Patches aufzuzählen.
Überprüfen Sie diesen Artikel. Es ist nicht genau das tun, was man braucht, aber es bietet die comObject.types.ps1xml Datei benötigen Sie:
http://www.snowland.se/2010/02/21/read-msi-information-with-powershell/
Dann können Sie dies tun, um den Patch zu erhalten:
$installer_obj = New-Object -com WindowsInstaller.Installer;
$patches = $installer_obj.InvokeParamProperty("PatchesEx", "Product-Code-GUID", "s-1-1-0", 7, 15);
Product-Code-GUID ist die GUID für das Produkt, an dem Sie interessiert sind. Ich ziehe es vor, auch eine Liste von Produkten aufzulisten und die GUID programmatisch auf den von Menschen lesbaren Namen zu beziehen (dh den, der in Software angezeigt wird).
$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);
Entweder Weg Sie nehmen, jetzt müssen Sie nur eine Schleife durch den $ Patches und rufen msiexec von der Kommandozeile mit den richtigen Argumenten (wenn Sie entscheiden sie eine Zeichenkette für den $ interesting_product_code zu bedienen, einfach ersetzen die Variable und Verkettung mit der Zeichenkette 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;
}
Hier ist ein Verweis auf das Windows Installer-cOM-Objekt. Sie können auch mit ihm einigen anderen lustigen Sachen tun:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa369432%28v=vs.85%29.aspx
Hoffnung, dass Aaron
hilft, das funktioniert. Haben Sie nicht genug "Ruf", um die Antwort obwohl zu stimmen. – gregs