AutomoxAutomox

Make one common change to 100+ policies - best method?

jbh
January 12, 2022 at 8:07 pm UTC
#updates#patch#api

I have a couple hundred policies in Automox for patching.  If I want to make a change to all of them, there are multiple ways to do it via API.  I’m wondering what the most efficient method for doing it is.

 

For example, if I just want to change the patch severity on all of them from, say “high” to “low” - what’s the recommended method for doing that on 100+ policies?

This discussion is archived and closed to replies. Continue it in the Automox Community Slack.

Discuss on Slack

Replies (6)

BrittanyJanuary 12, 2022
#1

I checked with our support team and they mentioned that the best way to do this would be to loop them through the API, but unfortunately we don’t have an easier way. If you have any questions about accomplishing this via API, let me know and I can get back to you!

jbhJanuary 13, 2022
#2

Thanks.  Yes, I’d love to see the actual commands that one would use to do this.  That would be very helpful.

jbhJanuary 18, 2022
#3

Just wanted to follow up and say that Automox reached out to me to schedule a 1:1 call to get this done.  Props to Automox and their support.  I’m happy to put the code here if it would be useful for anyone else and doesn’t violate any rules.

AnonymousJanuary 20, 2022
#4

@jbh -- absolutely! We’d like to get that added to the API documentation, for sure. Keep us posted!

jbhJanuary 20, 2022
#5
powershell41 lines
######################################################
$apiKey = 'yourApiKeyHere'
$orgID = "yourorIdHere"
$changefrom = "high"
$changeto = "low"

#####Only update the two Variables in this block######
######################################################

#Api Request
$headers = @{ "Authorization" = "Bearer $apiKey" }
$uri = "https://console.automox.com/api/policies?o=$clientID"
$responses = (Invoke-WebRequest -Method Get -Uri $uri -Headers $headers).Content | ConvertFrom-Json

$ids = $responses | ? {$_.name -match "Windows Policy"} | Select -ExpandProperty id
#Use this for one device# $ids = '123456'
#Use this for multiple devices#  $ids = @('xxxx','xxxx','xxxx')
$middle = '?o='

$ids | % {
$PolicyID = $_

$headers = @{ "Authorization" = "Bearer $apiKey" }
$url = "https://console.automox.com/api/policies/$policyID$middle$orgID"
$response = (Invoke-WebRequest -Method Get -Uri $url -Headers $headers).Content

$policyfinal = $response.replace("$changefrom","$changeto")


$body = @"
$policyfinal
"@


$headers = @{
    "Authorization" = "Bearer $apiKey"
    "Content-Type" = "application/json"
  }
$url = "https://console.automox.com/api/policies/$policyID$middle$orgID"
Invoke-WebRequest -Method Put -Uri $url -Headers $headers -Body $body
}

This iterates through any policy that has a name that includes “Windows Policy” and will update the priority of the policy updates from “high” to “low”.  While this is a very specific niche use-case, the overall code/script itself can easily be modified to update any other part of a policy through the API.

AnonymousJanuary 20, 2022
#6

H*ck yeah, thanks!! :metal: