Popis programske opreme z Win32_Product v sistemu Windows

Zadnja posodobitev: 17/12/2025
Avtor: Isaac
  • Win32_Product vam omogoča popis in odstranitev programske opreme MSI, vendar ne zajema vse nameščene programske opreme in ni brez stranskih učinkov.
  • PowerShell in register (DisplayName in UninstallString) ponuja bolj celovite alternative za seznam in upravljanje programov.
  • GUID izdelkov MSI se pridobi z Win32_Product, medtem ko drugi namestitveni programi zahtevajo neposredno branje UninstallString.
  • Združevanje WMI, beleženja in skriptov omogoča avtomatizacijo popisov, odstranitev in preverjanja agentov v okoljih. Windows.

Popis programske opreme z Win32_Product v sistemu Windows

upravljati popis programske opreme v sistemu Windows To je ena tistih nalog, ki jih skoraj nihče noče opravljati, a se s tem prej ali slej soočiš, še posebej, če vodiš več ekip ali moraš nekatere zapustiti. prenosni »Čisto« za produkcijo. V tem kontekstu razred WMI Win32_Product Običajno se prikaže kot hitra in neposredna možnost za preverjanje nameščenih aplikacij, avtomatizacijo odstranitev in potrjevanje namestitev, ki temeljijo na MSI.

Vendar pa se zanašajoč na Win32_Product Brez popolnega razumevanja, kaj počne v ozadju, lahko pride do neprijetnih presenečenj: od znatnih zamud pri skriptih do tihih popravil paketov MSI. Poleg tega se vsa programska oprema ne namesti prek namestitvenega programa Windows, kar otežuje upravljanje zalog in samodejno odstranjevanje. V naslednjih razdelkih si bomo podrobno ogledali, kako uporabljati Win32_Product, katere alternative obstajajo v PowerShellu in registru, kako pridobiti GUID-je izdelkov ter kako varno in učinkovito izvajati skripte v sodobnih okoljih Windows.

Kaj je Win32_Product in katere informacije o programski opremi ponuja?

Razred WMI Win32_Product Je del imenskega prostora koren\cimv2 iz WMI in je zasnovan za predstavitev nameščenih izdelkov z uporabo Namestitveni program za Microsoft Windows (MSI)Ko je poizvedovano, vam omogoča pridobitev ključnih podatkov o paketih MSI, ki so prisotni v sistemu, kot so ime, različica, prodajalec ali identifikator izdelka (GUID), med drugimi atributi, pomembnimi za administracijo.

Med najbolj uporabnimi lastnostmi Win32_Product Sem spadajo ime izdelka (Name), številka različice (Version), prodajalec (Vendor), identifikator izdelka (IdentifyingNumber) in lokalna lokacija paketa (LocalPackage). Te lastnosti so še posebej dragocene, kadar potrebujete inventarna programska oprema MSI, preverite, katera različica kritične aplikacije je nameščena, ali enolično identificirajte izdelek za odstranitev z uporabo ukazi avtomatizirano.

Pomembno je biti jasen, da Win32_Product vrne samo programsko opremo, nameščeno z namestitvenim programom WindowsProgrami, nameščeni z namestitvenimi programi po meri, namestitvenimi programi EXE, drugimi pakiranimi aplikacijami ali programsko opremo iz trgovine Microsoft Store, se ne bodo prikazali v teh vrstah poizvedb. Čeprav je to zmogljivo orodje, samo po sebi ne pokriva celotnega inventarja aplikacij v računalniku.

Microsoftova tehnična dokumentacija se sklicuje na vire, kot so Center za skripte TechNet Za dodatne primere skriptov, ki uporabljajo ta in številne druge razrede WMI, si oglejte spodnje vire. Ti viri prikazujejo praktične primere uporabe za naštevanje, filtriranje, odstranjevanje in revidiranje programske opreme, nameščene prek MSI, tako na lokalnih kot oddaljenih računalnikih, z uporabo različnih skriptnih jezikov.

Uporaba WMI Win32_Product za popis programske opreme

Zagon skriptov WMI za popis programske opreme

Čeprav se danes večina administratorjev nagiba k PowerShellŠe vedno obstaja veliko okolij, kjer se Microsoftovi primeri in klasična dokumentacija zanašajo na VBScript in WMISkripti za popis programske opreme se običajno izvajajo na lokalnem računalniku, vendar lahko z manjšimi spremembami ciljajo na oddaljene računalnike, če so na voljo ustrezna dovoljenja in povezljivost.

Tipični Microsoftov priročnik pojasnjuje preprost postopek za Zagon skriptov s pripono .vbsSplošni potek je sestavljen iz pisanja kode za scriptshranite ga s pravilno končnico in ga zaženite iz ukazne vrstice z uporabo skriptatako da izhod ostane v konzoli in se grafični vmesnik Windows Script Host ne odpre.

Osnovni postopek za zagon enega od teh skriptov vključuje kopiranje vzorčne kode in shranjevanje le-te v datoteko, kot je ime.vbs (pazite, da urejevalnik na konec ne doda ».txt«), odprite okno ukazni poziv, preklopite v imenik, kjer je bil shranjen skript, in zaženite ukaz tipa ime skripte cscript.vbsTa pristop velja tako za skripte, ki samo berejo informacije, kot tudi za tiste, ki izvajajo dejanja, kot so odstranitve.

  Kako onemogočiti upravitelja opravil sistema Windows korak za korakom

Pomembno je upoštevati, dovoljenja, potrebna za dostop do določenih virovČe skript poizveduje po občutljivih informacijah, kot so nekateri zaščiteni dnevniki dogodkov ali sistemska območja, za katera velja nadzor uporabniških računov (UAC), bo morda nujno, da konzolo odprete s povišanimi pravicami (Zaženi kot skrbnik), da bo delovala pravilno.

Čeprav se mnogi primeri osredotočajo na lokalni računalnik, Microsoft podrobno dokumentira, kako Povezovanje z WMI na oddaljenih računalnikihZ uporabo povezovalnih nizov, ki vključujejo ime računalnika in poverilnice z ustreznimi dovoljenji, je mogoče skenirati več računalnikov in centralno zbirati informacije o programski opremi, kar je zelo uporabno pri revizijah ali množičnih uvajanjih.

Odstranite programsko opremo MSI z uporabo programa Win32_Product

Ena najbolj presenetljivih zmogljivosti razreda Win32_Product Ne omogoča vam le seznama nameščenih MSI aplikacij, ampak tudi odstranite jih z metodo UninstallTo odpira vrata avtomatizaciji odstranjevanja neželene programske opreme iz več deset računalnikov, ne da bi se bilo treba ročno pomikati po nadzorni plošči.

V VBScriptu je tipičen pristop povezava s storitvijo WMI želenega računalnika, izvajanje poizvedbe v razredu Win32_Product s filtriranjem po imenu izdelka in nato iteracija skozi nastalo zbirko s klicem metode Odstrani() v vsakem primeru. Na ta način je mogoče določeno aplikacijo, ki je bila nameščena s programom Windows Installer, tiho odstraniti.

Skript v klasičnem Visual Basicu običajno sledi vzorcu, podobnemu naslednjemu: ciljni računalnik je definiran (običajno "." za označevanje lokalnega računalnika), ustvari se objekt WMI, ki kaže na koren\cimv2 Z ustrezno stopnjo poosebitve se izvede poizvedba »Select * from Win32_Product Where Name = 'Product Name'« in za vsak vrnjeni objekt se pokliče naslednje: objSoftware.Odstrani()Posledica tega je, da se določena aplikacija odstrani brez ročnega posredovanja.

En PowerShellLogika je zelo podobna, vendar s čistejšo sintakso. Uporablja se Get-WmiObject -razred Win32_Product Za pridobitev vseh izdelkov MSI uporabite filter Kjer-objekt z želenim imenom in v zanki predpostavitiMetoda se imenuje Odstrani() vsakega ujemajočega se predmeta. Ta pristop je odličen na primer za množično brisanje poslovnega paketa, ki ga ne želimo več hraniti v floti opreme.

Vendar je pomembno vedeti, da Win32_Product ima lahko neželene učinkeKo so na seznamu izdelki s tem razredom, lahko namestitveni program Windows sproži preverjanje stanja in popravila poškodovanih paketov. V velikih produkcijskih okoljih lahko to vedenje povzroči znaten promet, porabo procesorja in zamude, zato mnogi skrbniki raje uporabljajo druge metode za popisovanje programske opreme in rezervirajo Win32_Product le za zelo specifične primere nadzorovane odstranitve.

Poizvedba o programski opremi in odstranitev z WMI

Uporaba PowerShella za seznam nameščene programske opreme

Ko gre za pridobitev seznama nameščenih programov, PowerShell ponuja več alternativNekateri temeljijo na WMI, drugi pa se zanašajo neposredno na register sistema Windows. Ni enega samega ukaza, ki bi deloval popolnoma za vse scenarije, zato je pogosto koristno kombinirati več tehnik, odvisno od vrste programske opreme, ki jo želite zaznati.

Najbolj neposreden ukaz, čeprav ne vedno najbolj priporočljiv, je Get-WmiObject Win32_Product (ali njegov vzdevek »gwmi Win32_Product«). Ta ukaz uporablja WMI za seznam vseh izdelkov MSI, nameščenih v sistemu. Je zelo priročen, ker vrne objekte, bogate z lastnostmi, vendar ima pomanjkljivost, da lahko povzroči popravila in izključi vse programe, ki niso MSI.

Za večjo programsko opremo se mnogi skrbniki obrnejo na register. programi za popisKljuči do HKLM:\Programska oprema\Microsoft\Windows\Trenutna različica\Odstranitev in njegov nasprotnik HKLM:\PROGRAMSKA OPREMA\Wow6432Node\Microsoft\Windows\Trenutna različica\Odstrani Shranjujejo informacije o nameščenih 64-bitnih oziroma 32-bitnih programih. S PowerShellom lahko izvedete ukaz, kot je Get-ItemProperty na teh poteh za pridobivanje vrednosti, kot so DisplayName, DisplayVersion, Publisher ali InstallDate.

Klasični pristop vključuje uporabo gp (vzdevek Get-ItemProperty) na obeh poteh in filtrirajte elemente, katerih DisplayName ni prazen. Nato izberite samo lastnost DisplayName, da dobite hiter seznam aplikacij, vidnih v »Programi in funkcije«. S tem se izognete zanašanju na WMI in zajamete veliko več namestitvenih programov, vključno s tistimi, ki ne temeljijo na MSI.

  Nasveti in razlike za uporabnike macOS, ki prehajajo na Windows

Če so potrebne popolnejše informacije, se običajno sestavijo nekoliko bolj dovršeni ukazi, ki kličejo Get-ItemProperty in nato uporabijo Izberite-Predmet za prikaz različnih lastnosti, kot so prikazano ime, različica, proizvajalec in datum namestitve. Na koncu se uporabi Oblika-Tabela-Samodejna Velikost tako da je izhod berljiv v konzoli. To je mogoče storiti s standardno 64-bitno vejo ali z vejo Wow6432Node za 32-bitno programsko opremo.

Drugo razpoložljivo orodje je WMIC (Ukazna vrstica za instrumentacijo upravljanja sistema Windows), ki je sicer v najnovejših različicah sistema Windows opuščena, vendar jo še vedno vidimo na številnih strežnikih in delovnih postajah. Ukaz, kot je izdelek wmic pridobi ime, različico Navaja imena in različice izdelkov MSI, kar se izkaže za uporabno, ko potrebujete hiter rezultat brez vnašanja zapletenih skript.

Ukazi PowerShell za popis programske opreme

DisplayName, UninstallString in registrski ključi za odstranitev

Poleg WMI je zelo pomemben del Popis programske opreme v sistemu Windows temelji na registruVsaka nameščena aplikacija ima običajno ključ znotraj poti za odstranitev, ki smo jih omenili prej, in znotraj tega ključa se nahajajo vrednosti, ki so bistvene tako za prikaz aplikacije v nadzorni plošči kot za avtomatizacijo njene odstranitve.

Dve najbolj zanimivi vrednosti, ki ju običajno najdemo v vsakem vnosu, sta Prikazno ime y UninstallStringPrvi ustreza imenu, ki ga vidimo v razdelku »Odstrani ali spremeni program« v razdelku »Programi in funkcije« na nadzorni plošči. To je besedilo, ki ga uporabnik prepozna kot ime aplikacije, kot je prikazano v grafičnem vmesniku.

Vrednost UninstallString Za skrbnike je še bolj dragocen, ker vsebuje ukaz, ki ga Windows izvede, ko v nadzorni plošči kliknete gumb za odstranitev. Pogosto gre za klic ... msiexec z GUID-jem in več parametri ali lastniško izvedljivo datoteko proizvajalca s posebnimi možnostmi. Poznavanje tega niza vam omogoča, da odstranitev zaženete na daljavo ali samodejno iz skriptov PowerShell, VBScript ali drugih orodij za upravljanje.

Če te ključe pregledamo s programom PowerShell Get-ItemPropertyVrednosti, kot so DisplayName, DisplayVersion, Publisher in UninstallString, je mogoče kombinirati za izdelavo celovitega seznama aplikacij z vsemi informacijami, potrebnimi za popis, nadzor in odstranitev. Ta pristop je zelo prilagodljiv, saj je neodvisen od vrste namestitvenega programa (MSI, EXE itd.) in ne sproži popravil, povezanih z Win32_Product.

Vizualno se vse to odraža v oknu »Odstrani ali spremeni program« ki ga najdemo v razdelku »Programi in funkcije«. Vsaka vrstica na tem seznamu običajno ustreza vnosu v register v omenjenih poteh, z imenom »DisplayName« in običajno povezanim nizom »UninstallString«. Razumevanje tega razmerja pomaga diagnosticirati, zakaj se aplikacija včasih ne prikaže v nadzorni plošči ali zakaj ročna odstranitev ne deluje po pričakovanjih.

Pridobi GUID in zaznaj programsko opremo brez MSI

V praksi je eden od ponavljajočih se izzivov poiščite GUID nameščenega izdelka da ga lahko odstranite z uporabo msiexec ali orodij za uvajanje. Pri delu s paketi MSI Win32_Product precej olajša delo, saj lastnost IdentifyingNumber vrne natančno ta GUID v standardni obliki.

Na primer, če uporabite ukaz, kot je Get-WmiObject Win32_Product | Format-Table IdentificationNumber, Name, LocalPackage -AutoSizeTa izhod ustvari tabelo z imenom izdelka, njegovim GUID-jem in lokacijo datoteke MSI v predpomnilniku namestitve sistema Windows. Ta vrsta izhoda je zelo uporabna za preverjanje, ali je korporativni agent (kot so rešitve za odkrivanje goljufij ali varnostna orodja) pravilno nameščen in ali ga je mogoče upravljati prek MSI.

Težava nastane, ko se program ne prikaže kot klasični MSI izdelekV nekaterih primerih imajo lahko orodja, distribuirana kot datoteke EXE ali ki uporabljajo različne ponudnike, drugačno ime ponudnika (ProviderName), na primer »Programs« namesto »msi«. V teh primerih poskus pridobitve GUID-a samo z uporabo Win32_Product ne bo deloval, ker preprosto ni identifikatorja MSI, ki bi ga bilo mogoče posredovati programu msiexec.

  Kako deliti datoteke med virtualnim strojem in gostiteljem v Hyper-V

Tipičen scenarij v poslovnih okoljih je tehnik, ki od proizvajalca prejme več prenosnikov (na primer serijo HP ProBooks) s predhodno nameščeno programsko opremo. Del njihovega dela vključuje odstranite vso programsko opremo za prenos podatkovZa številne vnaprej nameščene programe preprosto preverjanje ključev Win32_Product ali Uninstall zagotovi GUID ali niz za odstranitev. Vendar pa vedno obstaja nekaj aplikacij, ki ne sledijo standardnemu vzorcu.

Ko je ProviderName »Programs« ali druga vrednost, ki ni povezana z MSI, je to običajno potrebno poiščite niz za odstranitev neposredno v registruTam, v UninstallString, lahko najdete ukaz, ki ga sistem uporabi za odstranitev aplikacije, tudi brez tipičnega GUID-ja namestitvenega programa Windows. Iz tega niza lahko ustvarite skripte, ki pokličejo to izvedljivo datoteko z ustreznimi parametri za njeno tiho odstranitev.

V bolj zapletenih primerih, če prodajalec ne zagotovi jasne datoteke MSI ali standardnega niza UninstallString, boste morda morali uporabiti dodatna orodja ali se posvetovati s specifično dokumentacijo prodajalca. Vendar pa je v mnogih okoljih večina teh scenarijev rešena brez namestitve dodatne programske opreme, pri čemer se zanašate izključno na PowerShell, WMI in sistemski register.

Preverjanje določenih agentov in orodij z Win32_Product

Poleg splošne uporabe zalog obstajajo tudi posebni scenariji, v katerih morajo organizacije na nizki ravni potrditi, da prisoten je določen programski agent in pravilno nameščeni. Tipičen primer so agenti, odgovorni za spremljanje, varnost ali analizo goljufij, ki morajo biti enotno nameščeni po celotni floti opreme.

V teh primerih je ukaz, kot je get-wmiobject Win32_Product | Format-Table IdentifyingNumber, Name, LocalPackage-AutoSize To je zelo praktično. Izhod vsebuje ime izdelka, ID izdelka (GUID) in lokacijo datoteke MSI, shranjene v predpomnilniku namestitve sistema Windows. S temi informacijami lahko preverite, ali je nameščen pravilen paket in ali je njegova datoteka MSI na voljo za morebitna popravila ali nadzorovane odstranitve.

Nekatere komercialne rešitve, kot so napredne platforme za odkrivanje goljufij, izrecno dokumentirajo uporabo Win32_Product kot podprto metodo za preverjanje vašega agenta. Ti priročniki poudarjajo, da Vrnjene informacije so zaupne in je namenjen izključno pooblaščenim strankam, kar prepoveduje njegovo objavo v odprtih ali javno dostopnih virih, kar poudarja občutljivost nekaterih poslovnih okolij.

Druga pogosta uporaba Win32_Product je hitro prepoznavanje različice pisarniškega paketa kot Microsoft OfficeNameščeno prek tradicionalnega MSI-ja. Preprosto filtrirajte po imenu izdelka in preverite lastnost Različica, da vidite, katera določena izdaja je na računalniku, kar je zelo uporabno pri upravljanju migracij ali množičnih posodobitev in če morate poznati začetno točko vsakega računalnika.

Te vrste pregledov se zelo dobro ujemajo z centralizirani sistemi zalog y orodja za oddaljeno upravljanjeČeprav Win32_Product ni idealen za obsežno skeniranje stotin računalnikov hkrati, je zelo priročen, saj naključno preverjanje ali kot del skriptov za preverjanje po uvedbi.

Obvladajte različni viri informacij o programski opremi, nameščeni v sistemu Windows (WMI, register, nadzorna plošča in ukazne vrstice) vam omogoča, da se z veliko večjo lahkoto in manj improvizacijami lotite nalog, kot so popis, množična odstranitev, preverjanje agentov in nadzor različic, kar prihrani čas in glavobole pri vsakodnevnem upravljanju sistemov.

Pridobite seznam vse nameščene programske opreme iz PowerShella
Povezani članek:
Kako pridobiti seznam vse nameščene programske opreme iz PowerShella