Cum să verificați rapid versiunile software instalate
există situații în care trebuie să verificați dacă dvs. sau utilizatorii dvs. aveți anumite programe instalate și care este versiunea sa. Poate doriți să verificați dacă software-ul este actualizat sau dacă software-ul implementat de GPO a fost instalat pentru un anumit utilizator. Vă voi arăta mai multe metode pe care le puteți utiliza pentru a verifica acest lucru cu PowerShell.
navigare rapidă:
- verificați lista software-ului instalat local
- Get-WmiObject
- interogare registru
- jurnal de evenimente
- verificați lista de software instalat de la distanță
- Get-WmiObject
- registru interogare
- jurnal de evenimente
- verificați dacă software-ul implementat de GPO a fost aplicat cu succes
verificați ce este instalat pecomputerul dvs.
pentru a verifica ce software este instalat, puteți utiliza întotdeauna programe și caracteristici din panoul de Control sau puteți răsfoi toate partițiile de disc în căutarea unei anumite aplicații. Puteți chiar să încercați să găsiți o aplicație în meniul Start pentru a o lansa și a căuta manual Numărul versiunii sale. Cu toate acestea, problema cu aceste metode este că acestea sunt la fel de departe de „rapid și automat”, deoarece acestea pot fi. Verificarea versiunilor software instalate utilizând PowerShell vă permite să colectați date de care aveți nevoie mult mai repede.
obțineți lista de software instalată cu Get-WmiObject
firstmethod este la fel de simplu ca lipirea unei interogări simple:
Get-WmiObject -Class Win32_Product
de asemenea, puteți filtra cu ușurință datele pentru a găsi aplicații specifice de la un singur furnizor, împreună cu versiunile acestora, de exemplu:
Get-WmiObject -Class Win32_Product | where vendor -eq CodeTwo | select Name, Version
în Ciudafiind foarte ușor, această metodă are un dezavantaj major – este nevoie de ceva timp pentru a reveni la rezultate.
registru de interogare pentrusoftware-ul instalat
o altă metodă de a obține o listă de software instalat interoghează Registrul. Următorul script scurt returnează lista de aplicații împreună cu versiunile lor:
$InstalledSoftware = Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall"foreach($obj in $InstalledSoftware){write-host $obj.GetValue('DisplayName') -NoNewline; write-host " - " -NoNewline; write-host $obj.GetValue('DisplayVersion')}
acum, aruncați o privire rapidă la elementul HKLM îngroșat mai sus. Aceasta înseamnă că lista desoftware – ul returnat de script este tot software-ul instalat pe lm-localmachine. Cu toate acestea, aplicațiile pot fi instalate și pentru fiecare utilizator. Pentru a returna Alist de aplicații ale utilizatorului înregistrat în prezent, schimbați HKLM în HKCU (cu înseamnă „utilizator curent”):
$InstalledSoftware = Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall"
foreach($obj in $InstalledSoftware){write-host $obj.GetValue('DisplayName') -NoNewline; write-host " - " -NoNewline; write-host $obj.GetValue('DisplayVersion')}
obținerea listei desoftware instalat recent din Jurnalul de evenimente
dacă dorițipentru a verifica numai software-ul instalat recent, puteți utiliza următorul cmdletpentru a căuta prin Jurnalul de evenimente.
Get-WinEvent -ProviderName msiinstaller | where id -eq 1033 | select timecreated,message | FL *
această metodă de a afla software-ul instalat este cea mai fiabilă pentru elementele adăugate recent, deoarece, în mod implicit, jurnalele de evenimente sunt setate să suprascrie cele mai vechi înregistrări(logare circulară).
Aflați mai multe despre utilizarea PowerShell pentru a verifica jurnalele de evenimente Windows și rezultatele filtrării
obțineți o listă de instalatesoftware de la distanță
fiecare dintre metodele menționate mai sus poate fi utilizată și pentru a verifica software-ul instalat pe alte mașini din aceeași rețea. Dacă creați o listă cu toate numele computerului din rețeaua dvs., puteți utiliza metodele de mai jos într-o buclă Foreach pentru a returna rezultate de la mai mult de un singur computer la distanță.
$pcname în fiecare script reprezintă numele computerului la distanță pe care doriți să obțineți o listă de software instalat și versiunile acestora.
Obțineți softwarelist instalat cu comanda Get-WmiObject de la distanță
următorul cmdlet este, din nou, cel mai ușor din buchet, dar poate dura ceva timp pentru a termina:
Get-WmiObject Win32_Product -ComputerName $pcname | select Name,Version
unde$pcname este numele computerului pe care doriți să îl interogați.
verificați software-ul instalatcu interogare de registru la distanță
interogările de registru la distanță sunt puțin mai complicate și necesită rularea serviciului de registru la distanță. O interogare eșantion este după cum urmează:
$list=@()$InstalledSoftwareKey="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"$InstalledSoftware=::OpenRemoteBaseKey('LocalMachine',$pcname)$RegistryKey=$InstalledSoftware.OpenSubKey($InstalledSoftwareKey) $SubKeys=$RegistryKey.GetSubKeyNames()Foreach ($key in $SubKeys){$thisKey=$InstalledSoftwareKey+"\"+$key$thisSubKey=$InstalledSoftware.OpenSubKey($thisKey)$obj = New-Object PSObject$obj | Add-Member -MemberType NoteProperty -Name "ComputerName" -Value $pcname$obj | Add-Member -MemberType NoteProperty -Name "DisplayName" -Value $($thisSubKey.GetValue("DisplayName"))$obj | Add-Member -MemberType NoteProperty -Name "DisplayVersion" -Value $($thisSubKey.GetValue("DisplayVersion"))$list += $obj}$list | where { $_.DisplayName } | select ComputerName, DisplayName, DisplayVersion | FT
verificați lista software-ului instalat recent din Jurnalul de evenimente de la distanță
verificarea jurnalului de evenimente auser de la distanță necesită adăugarea unui singur atribut (- ComputerName) la cmdlet-ul utilizat înainte:
Get-WinEvent -ComputerName $pcname -ProviderName msiinstaller | where id -eq 1033 | select timecreated,message | FL *
verificați dacă un software implementat de GPO a fost aplicat cu succes
dacă ați aplicat o anumită versiune de software prin GPO, puteți verifica cu ușurință dacă acest GPO a fost aplicat cu succes unui utilizator sau nu. Tot ce ai nevoie este instrumentul gpresult andnames de calculator țintă și utilizator:
gpresult /s "PCNAME" /USER "Username" /h "Target location of theHTML report"
apoi, căutați GPOname-ul dvs. și verificați dacă este listat sub GPO-uri aplicate sau GPO-uri refuzate.Eșantionul GPO de mai jos se află în grupul GPO aplicat.