Anlage des Repos
This commit is contained in:
70
test/List-Software.ps1
Normal file
70
test/List-Software.ps1
Normal file
@@ -0,0 +1,70 @@
|
||||
######################################################################
|
||||
#
|
||||
# List-Software.ps1
|
||||
#
|
||||
# PowerShell-Script to list and classify installed software
|
||||
# Version: 1.0, 25.10.2009
|
||||
#
|
||||
# Input-csv-file: List-Software-Classifications.txt
|
||||
# Format: SoftwareClass,PartOfName
|
||||
# Examples: "FreeWare","Adobe Reader"
|
||||
# "Software","Microsoft Office Enterprise 2007"
|
||||
# "Driver","SigmaTel Audio"
|
||||
# "MS-Components","Microsoft .NET"
|
||||
#
|
||||
# (c) 2009, Andreas Lauer IT Service, www.alits.de
|
||||
# Free Usage for www.powershell-ag.de
|
||||
#
|
||||
######################################################################
|
||||
|
||||
#-----------------------------------------------------------------
|
||||
# Functions
|
||||
#-----------------------------------------------------------------
|
||||
|
||||
Function Get-SoftwareList {
|
||||
#Get All Users Software-List
|
||||
$Keys = Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall"
|
||||
$SoftwareMachine = @($Keys | foreach-object {Get-ItemProperty $_.PsPath})
|
||||
Write-Host "Count of Software for All Users:" $SoftwareMachine.Count
|
||||
|
||||
#Get Current User Software-List
|
||||
$Keys = Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall"
|
||||
$SoftwareUser = @($Keys | foreach-object {Get-ItemProperty $_.PsPath})
|
||||
Write-Host "Count of Software for Current User:" $SoftwareUser.Count
|
||||
|
||||
#Add both Software-Lists
|
||||
$SoftwareAll = $SoftwareMachine + $SoftwareUser
|
||||
Write-Host "Total Count of Software:" $SoftwareAll.Count
|
||||
|
||||
#Drop SystemComponents and Software with empty Name
|
||||
$Software = ($SoftwareAll | Where-Object {(($_.DisplayName+" ") -ne " ") -and ($_.SystemComponent -ne 1)}| Sort-Object DisplayName)
|
||||
Write-Host "Count of Installed Software:" $Software.Count
|
||||
|
||||
#Import csv-File with Software-Classifications - to be edited
|
||||
$ClassificationListFile = "List-Software-Classifications.txt"
|
||||
$ClassificationList = Import-Csv $ClassificationListFile
|
||||
|
||||
#Classify Software, use Property "PsPath" for Classification-Text
|
||||
foreach ($Item in $Software) {
|
||||
$Item.PsPath = "**unknown**"
|
||||
foreach ($Class in $ClassificationList) {
|
||||
if (($Item.DisplayName+" ").Contains($Class.PartOfName)) {
|
||||
$Item.PsPath = $Class.SoftwareClass
|
||||
Break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Output
|
||||
$Software | ft PsPath, DisplayName, DisplayVersion, Publisher, InstallDate -AutoSize | Out-File SoftwareList.txt
|
||||
$Software | select-object PsPath, DisplayName, DisplayVersion, Publisher, InstallDate | Export-Csv SoftwareList.csv -NoTypeInformation
|
||||
}
|
||||
|
||||
#-----------------------------------------------------------------
|
||||
# Main program
|
||||
#-----------------------------------------------------------------
|
||||
|
||||
Clear-Host
|
||||
Write-Host "Starting ..."
|
||||
Get-SoftwareList
|
||||
Write-Host "... Done."
|
||||
Reference in New Issue
Block a user