Hoe snel geïnstalleerde softwareversies
er zijn situaties waarin u moet controleren of u of uw gebruikers bepaalde software hebben geïnstalleerd, en wat de versie ervan is. U kunt controleren of de software up-to-date is of of uw GPO-geà mplementeerde software is geïnstalleerd voor een bepaalde gebruiker. Ik zal je verschillende methoden laten zien die je kunt gebruiken om dat te controleren met PowerShell.
snelle navigatie:
- Controleer de lijst met geïnstalleerde software lokaal
- Get-WmiObject
- query Register
- Event log
- Controleer de lijst met geïnstalleerde software op afstand
- Get-WmiObject
- query Register
- Event log
- Controleer of GPO-software geïmplementeerd is toegepast
Controleren wat geïnstalleerd onyour computer
om Te controleren welke software is geïnstalleerd, kunt u altijd gebruik maken van Programma ‘ s en onderdelen in uw Controle Paneel of blader door alle schijf partities op zoek naar een specifieke app. U kunt zelfs proberen en vinden van een app in het menu Start om het te starten en te zoeken naar het versienummer handmatig. Echter, het probleem met deze methoden is dat ze zo ver van “snel en automatisch” als ze kunnen zijn. Door de geïnstalleerde softwareversies te controleren met behulp van PowerShell kun je veel sneller gegevens verzamelen die je nodig hebt.
get installed software list with Get-WmiObject
de eerste methode is zo eenvoudig als het plakken van een eenvoudige query:
Get-WmiObject -Class Win32_Product
u kunt ook eenvoudig de gegevens filteren om specifieke toepassingen van een enkele leverancier te vinden, samen met hun versies, bijvoorbeeld:
Get-WmiObject -Class Win32_Product | where vendor -eq CodeTwo | select Name, Version
Despitebeing zeer eenvoudig, deze methode heeft een belangrijke keerzijde-het duurt een tijdje om de resultaten te keren.
Query registry voor geïnstalleerde software
een andere methode voor het verkrijgen van een lijst met geïnstalleerde software is het opvragen van het register. Het volgende korte script geeft de lijst van toepassingen samen met hun versies:
$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')}
nu, neem aquick kijken naar de HKLM element hierboven vetgedrukt. Het betekent dat de lijst van software geretourneerd door het script is alle software geà nstalleerd op de LM – localmachine. Toepassingen kunnen echter ook per gebruiker worden geïnstalleerd. Om een lijst van toepassingen van de momenteel gelogde gebruiker terug te geven, Wijzig HKLM naar HKCU(CU staat voor “current user”):
$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')}
de lijst met recent geïnstalleerde software ophalen uit het gebeurtenislogboek
Als u alleen de recent geïnstalleerde software wilt controleren, kunt u de volgende cmdlet gebruiken om in het gebeurtenislogboek te zoeken.
Get-WinEvent -ProviderName msiinstaller | where id -eq 1033 | select timecreated,message | FL *
deze methode om de geïnstalleerde software te achterhalen is het meest betrouwbaar voor de recent toegevoegde elementen omdat gebeurtenislogs standaard zijn ingesteld om de oudste records te overschrijven(circulaire logging).
meer informatie over het gebruik van PowerShell om Windows-gebeurtenislogboeken en filterresultaten te controleren
een lijst met geïnstalleerde software op afstand
elk van de bovengenoemde methoden kan ook worden gebruikt om software te controleren die op andere machines in hetzelfde netwerk is geïnstalleerd. Als u een lijst met alle computernamen in uw netwerk maakt, kunt u de onderstaande methoden gebruiken binnen een foreach-lus om resultaten van meer dan één externe PC te retourneren.
$pcname in elk script staat voor de naam van de externe computer waarop u een lijst met geïnstalleerde software en hun versies wilt krijgen.
get installed softwarelijst met Remote Get-WmiObject Commando
de volgende cmdlet is, nogmaals, de makkelijkste in de groep, maar kan enige tijd duren om af te ronden:
Get-WmiObject Win32_Product -ComputerName $pcname | select Name,Version
waarbij$pcname de naam is van de computer die u wilt opvragen.
controleer geïnstalleerde software met Remote registry query
Remote registry query ‘ s zijn iets ingewikkelder en vereisen dat de Remote Registry service wordt uitgevoerd. Een voorbeeld van een query als volgt:
$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
Controleer onlangs installedsoftware lijst van het gebeurtenislogboek op afstand
het Controleren van auser gebeurtenislogboek op afstand vereist het toevoegen van een enkel kenmerk (-Computernaam) aan de cmdlet gebruikt voor:
Get-WinEvent -ComputerName $pcname -ProviderName msiinstaller | where id -eq 1033 | select timecreated,message | FL *
Controleer of er een GPO-ingezet softwarewas met succes toegepast
Als u applieda bepaalde software versie via GPO, kunt u gemakkelijk controleren of dit GPO wassuccessfully toegepast op een gebruiker of niet. Alles wat je nodig hebt is de gpresult tool andnamen van de doelcomputer en gebruiker:
gpresult /s "PCNAME" /USER "Username" /h "Target location of theHTML report"
Zoek vervolgens naar uw GPOname en controleer of deze wordt vermeld onder Toegepaste GPO ’s of geweigerde GPO’ s.Het onderstaande voorbeeld van het groepsbeleidsobject maakt deel uit van de groep Toegepaste groepsbeleidsobjecten.