Use a PowerShell script to identify software packages installed on every device in an organization referenced by the computer name.
By altering the script you can add additional fields - but make sure the Set-Content
line reflects all of the fields you add to the Select-Object
part of the last line of the script. You'll also want the Set-Content
line to have the fields in the same order as the Select-Object
.
Available fields:
List All Software Packages for All Devices
There are three areas in the code that you’ll need to update to get the script to function:
-
$orgID
= 'YOUR_ORG_ID'
You will need your Org ID, which can be found by looking at the URL. Select the value after the?o=
Note: You must have the required administrative permissions to manage API keys. See Managing Keys for more information.
$apiKey
= 'YOUR_API_KEY'
In your console, go to Settings → Secrets & Keys and select the API key. Note that the API key is per user, so that another user will have different API keys.$filePath
You can also modify$filepath
if you want to change the file name or save it in a different location. Keep in mind the script will overwrite a previously generated file if it exists.
Identify Software Install Count Script
Use this script to identify installed packages on every device in your organization.
See also How to Exclude items using -notlike switch
# Set these ----------------- $apiKey = 'YOUR_API_KEY' $orgID = 'YOUR_ORG_ID' $filepath = 'C:\Temp\SoftwareInventory.csv' # --------------------------- $page = 0 $limit = 500 $servers = @() Set-Content $filepath -Value "Computer,display_name,version" $apiInstance = 'https://console.automox.com/api/' $apiTable = 'servers' while($true) { $orgAndKey = "?o=$orgID&api_key=$apiKey&l=$limit&p=$page" # Put components together $uri = $apiInstance + $apiTable + $orgAndKey $resp = (Invoke-WebRequest -Method GET -Uri $uri -UseBasicParsing).Content | ConvertFrom-Json | Select-Object results $servers += $resp.results $page += 1 if($resp.results.count -lt $limit) { break } } $servers = $servers | Sort-Object name # Check each server for software foreach ($server in $servers) { $serverID = $server.id $serverName = $server.name Write-Output $serverName $orgAndKey = "/$serverID/packages?o=$orgID" # Put components together $getURI = $apiInstance + $apiTable + $orgAndKey $headers = @{ "Authorization" = "Bearer $apiKey" } $response = (Invoke-WebRequest -Method Get -Uri $getURI -Headers $headers).Content | ConvertFrom-Json $response | Where-Object {$_.installed -EQ $true} ` | Select-Object @{label=”Computer”; Expression= {"$serverName"}},Display_Name,Version ` | Sort-Object Display_Name | Export-Csv -Path $filepath -NoTypeInformation -Append -Force }
How to Exclude items using -notlike switch
You can also modify it to do things like not show Windows updates & hotfixes by altering the Where-Object
part of the last line of the script. For example:
Where-Object {$.installed -EQ $true -and $.repo -notlike "Windows*"}
Comments
0 comments
Article is closed for comments.