Wenn Sie ein IT-Administrator sind, es ist sehr wahrscheinlich, dass Sie Software für andere installieren mussten. Terminalmanagement ist heutzutage ein großes Geschäft, und Softwarewartung auf Hunderten oder Hunderten von Computern ist in großen Institutionen üblich. Trotz dieses, Big Business bedeutet normalerweise viel Geld.
Was ist, wenn Sie in einer Organisation mit wenig oder keinem Budget tätig sind?? Vielleicht haben Sie oder jemand in Ihrem Team PowerShell verwendet, um verschiedene Aufgaben zu automatisieren? Dann, Die gleichzeitige Verwaltung von Software auf vielen Endpunkten mit PowerShell kann von Vorteil sein.
Die PowerShell Scripting Language ist eine leistungsstarke flexible Sprache, die in einer Windows-Umgebung fast alles zu handhaben scheint. Die Arbeit mit Software auf entfernten Computern ist ein Kinderspiel!!
In diesem Beitrag, Sie erfahren, wie Sie mit PowerShell Berichte zu installierter Software erstellen können. Obwohl PowerShell auch in der Lage ist, Software zu installieren, Fokus auf anderweitig installierte Beratungssoftware.
Wo ist die Software registriert
Der Begriff “Software” ist eine vage Definition, besonders unter Windows. Wenn ein Softwarepaket installiert ist, Es liegt ganz beim Softwareentwickler, welche Änderungen am Computer des Benutzers vorgenommen werden. Software-Installer kopieren Dateien, Registrierungsschlüssel erstellen, WMI-Instanzen hinzufügen und mehr. Der Schlüssel zum Erstellen eines genauen Softwareinventarberichts, unabhängig von der Methode, ist, zuerst zu verstehen, wonach man suchen muss.
Obwohl die installierte Software im WMI registriert ist, Eine zuverlässigere Möglichkeit, diese Informationen zu finden, ist die Verwendung der Registrierung.
Jede moderne Version von Windows speichert die Informationen der installierten Software in den drei folgenden Registrierungsschlüsseln. Je nachdem, wie die Software installiert wurde, es wird immer als Registrierungsschlüssel unter einem dieser Primärschlüssel gespeichert.
- HKEY_LOCAL_MACHINE (Strecke von 32 Bits)
- HKEY_LOCAL_MACHINE6432Knoten (Strecke von 64 Bits)
- HKEY_CURRENT_USER (für jedes Benutzerprofil)
Jeder sekundäre Registrierungsschlüssel in diesen Primärschlüsseln wird im Allgemeinen nach dem globalen eindeutigen Bezeichner benannt (GUID) der Software. In diesem Schlüssel, kann Registrierungswerte für Softwaretitel finden, die Version und mehr.
Anforderungen an Remote-PCs
Um den in diesem Beitrag behandelten Code zu verwenden, Ich gehe davon aus, dass Sie PowerShell Remoting aktiviert und auf Ihren Remote-Computern verfügbar haben. Sie können PowerShell Remoting testen, indem Sie versuchen, einen einfachen Befehl wie auszuführen Invoke-Command -ComputerName REMOTEPCNAME -ScriptBlock {1}
. Wenn dies fehlschlägt, der Rest der Informationen in diesem Beitrag wird auch nicht funktionieren.
Um zu vermeiden, das Rad neu zu erstellen und Ihr eigenes PowerShell-Tool zu erstellen, lass uns ein vorhandenes verwenden. Vor einiger Zeit habe ich ein PowerShell-Modul namens PSSoftware erstellt, das dieses Problem gut löst.
Entscheiden , in einer PowerShell-Verwaltungskonsole, Laden Sie das PSSoftware PowerShell-Modul aus der PowerShell-Galerie herunter und installieren Sie es, indem Sie es ausführen Install-Module PSSoftware
.
Sobald Sie das Modul installiert haben, Überprüfen Sie die verfügbaren Befehle, indem Sie ausführen Get-Command -Module PSSoftware -Noun Software
. Sie werden einige Befehle sehen wie Get-InstalledSoftware
, Install-Software
,und Remove-Software
. Diese Befehle sind die Hauptfunktionen zur Verwaltung der Software. In diesem Beitrag, Ich konzentriere mich auf die Get-InstalledSoftware
Funktion.
Versuchen Sie es Get-InstalledSoftware
Befehl, der es zuerst lokal ohne Parameter ausführt. Sie werden sofort viele verschiedene Softwarepakete fliegen sehen.
PS51> Get-InstalledSoftware
ModifyPath : MsiExec.exe /I{4CF4DB38-0692-4A5B-BCE8-1667C51E8416}
VersionMajor : 14
Version : 14.0.500.272
sEstimatedSize2 : 732
URLInfoAbout :
NoRepair : 1
InstallSource : C:ProgramDataPackage Cache{4CF4DB38-0692-4A5B-BCE8-1667C51E8416}v14.0.500.272x64
Contact :
Size :
InstallLocation :
VersionMinor : 0
SystemComponent : 1
EstimatedSize : 1464
URLUpdateInfo :
InstallDate : 20170716
Comments :
WindowsInstaller : 1
HelpLink : https://go.microsoft.com/fwlink/?LinkId=154582
UninstallString : MsiExec.exe /I{4CF4DB38-0692-4A5B-BCE8-1667C51E8416}
GUID : {4CF4DB38-0692-4A5B-BCE8-1667C51E8416}
HelpTelephone :
Readme : Placeholder for ARP readme in case of no UI
Publisher : Microsoft Corporation
Language : 1033
Name : SQL Server vNext CTP2.0 XEvent
AuthorizedCDFPrefix :
PSComputerName : MACWINVM
RunspaceId : da83572b-150b-43b6-923a-14e516a77ba3
--snip--
Sie können diese Ausgabe auf den Titel und die Version beschränken, indem Sie die Select-Object
Cmdlet.
PS51> Get-InstalledSoftware | Select-Object -Property Name,Version
So fragen Sie einen Remote-Computer ab, benutze el ComputerName
Parameter. Es werden dieselben Softwarepakete zurückgegeben.
Möglicherweise möchten Sie nicht alle installierte Software sehen, aber nur Software, die zu einem bestimmten Titel passt. Sie können diese Informationen filtern, indem Sie die Where-Object
Cmdlet. Das folgende Beispiel findet alle Software, die mit . beginnt SQL auf dem Remote-Computer.
PS51> Get-InstalledSoftware | Where-Object {$_.Name -like 'SQL*'} | Select-Object -Property Name,Version
Zusammenfassung
Sobald Sie verstanden haben, wo die installierte Software gespeichert ist und mit PowerShell darauf zugreifen können, die welt ist deine auster. Von hier, Sie können diesen Code schnell auf mehrere Computer erweitern, auf der Suche nach zahlreichen Paketen und mehr.
Die Verwendung kostenloser Community-PowerShell-Module ist eine großartige Möglichkeit, kostengünstige Software-Erfinderberichte zu erstellen.