+ Changed folderDate's Get-Date Format
+ Commented code
+ Changed the name of the script to "Audit" as this is really the intended function; not sure why I named it otherwise originally
+ Minor fixes
+ Added support for checking for Nested Computer Groups in the Unused Computer Groups Criteria
+ Added support for checking for 4+ Nested Smart Groups within a Smart Group
+ Added addition configurations to check for Computer Group usage
+ Added checks for exclusions as well
+ In several functions, added a check to confirm records are present before performing actions
+ Updated the processEndpoints Function to support running searches separately
+ Resolved issue with using the $xmlOf_ComputerGroups variable for two different use cases in the processEndpoints Function
+ Restructured how the Policy Criteria Check Logic, combined functions into one (mimicking the computerGroupCriteria Function)
+ Updated logic in the processEndpoints Function
+ Added Computer Group Criteria
+ Updated necessary supporting functions for Computer Group Criteria reports
* Will need to update the processEndpoints Function to properly supporting running Policy and Computer Group Searches, separately.
+ Fixed a few minor issues
+ The multiple ways that I'm using the Computer Group object is causing issues with the different criteria, will have to adjust this logic for this; which was slightly expecting since I plan to add ore criteria to it
+ Added usage criteria for Printers
+ Added usage criteria for Computer Groups (only pulling usage in Policies at this time, will add more)
+ More descriptive variables, functions, etc
+ Modularized all the API GET calls as well as the "processing" logic
+ Added new criteria and improved logic of others
+ There are multiple versions of some criteria; just testing the best configurations, these will be cleaned up as I go
+ This is the initial version of this script; it is complied from multiple other scripts that individually pulled details for each criteria.
+ More to come!
+ Verbiage on the v9 API page implies certain objects accept POSTs when they actually don't...updated code to reflect this
+ Added required XML configuration data for objects as relates to the above item
+ Added missing privilege settings
Fixed the incorrectly displayed OS Limitation.
This is caused by the logic I added for the Mac Pro Mid 2010/Mid 2012 models. For MacPro 6,1 (2013/Trash Cans), these should be supported no matter the existing state, since they wouldn't be compatible with any OS that is old, nor have incompatible hardware. So they shouldn't run through this logic for those older systems.
+ Updated to support new configuration format for Licensing details
+ Config file no longer show the Customer Name or use the same License Type that we used; as well, we have two different configurations in our configuration file, so had to account for this
+ Probably didn't take the best approach here, just getting it working for now, may come back to it later
+ Combined the separate device type functions into a single function that will handle both device types. This will simplify future changes to the script.
+ Added extra verbosity that will print to the Policy log
+ Added an error exit if a Site Admin tries to move a device they do not have permissions to (So Jamf Log will show a failure)
+ Updated for Full Mojave Support
+ Adjusted the minimum RAM to the actual minimum
+ Modified the result returned for Sierra to include "OS Limitation"
+ Results from Jamf API were returning in JSON; fixed the curl header parameters to properly request XML
+ Added an additional curlStatusCode check on the curlJamfAPI return
+ Fixed a incorrect "result" assignment for outOfDate variable
+ Fixed a couple arguments' syntax