Solved

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

  • 12 January 2022
  • 6 replies
  • 118 views

Userlevel 2
Badge

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?

icon

Best answer by jbh 20 January 2022, 17:30

View original

6 replies

Userlevel 6
Badge +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!

Userlevel 2
Badge

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

Userlevel 2
Badge

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.

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

Userlevel 2
Badge
######################################################
$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.

H*ck yeah, thanks!! :metal:

Reply