# Get a list of all installed software from the Windows software library $installedSoftware = Get-Package # Get a list of all installed Windows updates $installedUpdates = Get-HotFix # Get a list of all Chocolatey packages $chocoPackages = choco list --localonly # Create a variable to hold all of the information $sbom = @() # Add the installed software to the SBOM $sbom += $installedSoftware # Add the formatted updates to the SBOM $sbom += $installedUpdates # Add the Chocolatey packages to the SBOM $sbom += $chocoPackages # Get the folder path $folderPath = "C:\Forensic Program Files" # Get all EXE files in the folder and its subfolders $exeFiles = Get-ChildItem $folderPath -Recurse -Filter "*.exe" # Create a variable to hold the EXE file information $exeInfo = @() # Loop through each EXE file foreach ($exeFile in $exeFiles) { # Get the file version information $fileVersion = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($exeFile.FullName) # Add the EXE file information to the array $exeInfo += New-Object PSObject -Property @{ "Path" = $exeFile.FullName "Product Name" = $fileVersion.ProductName "Product Version" = $fileVersion.ProductVersion } } # Add the EXE file information to the SBOM $sbom += $exeInfo # Export the SBOM to a CSV file $sbom | Export-Csv C:\tmp\sbom.csv -NoTypeInformation