Added notes for the following tables:
* computers
* computers_denormalized
* mobile_devices_denormalized
* mobile_device_management_commands
Reorganized tables in alphabetical order.
+ Improved logic when multiple Xcode app bundles are present
* "Acts on" the $latest version found
+ Switched from using `shopt -s nocasemath` to using REGEX in conditionals for case insensitive matching
+ Add some verbosity
* Fixed the script so that it _actually_ works now...
* Been meaning to do this for ages, just have had higher priority items to deal with
* This script is actually used on my AutoPkg Recipe `com.github.mlbz521.pkg.MicrosoftOfficeResetOptions`
* Fixed a bug due to a comparison operation that caused an error when the latest OS supported for a given model was a macOS `10.x` version.
* This bug did not affect the results of the script though.
* Simply reversed the conditional logic to resolve this issue
* Thanks to @allanp81 on the MacAdmins Slack for reporting this
+ Updated Icon maintenance section to make it easier to read
+ Improved overall icon checking logic
+ Deleting icons from VPPs that have been deleted
+ Added logic to delete icons specified by id
+ Hard deleting specific pending MDM Commands records
+ Bug Fixes
+ Updated icon maintenance to clean up all unused icons that match a specific naming pattern
+ Added additional cleanup for the following tables:
+ computer_user_pushtokens
+ mdm_command_source
+ mdm_command_group
+ mobile_device_management_commands
+ Updated to support changes in v1.7.0 of `Get-LastOSUpdateInstalled.py`.
* Changed how installed updates are tracked and reported. This prevents devices from submitting inventory multiple times in the same day if it reboots multiple times.
* Added support for a local EA History which will locally log each value that is collected on inventory.
* Changed how installed updates are tracked and reported. This prevents devices from submitting inventory multiple times in the same day if it reboots multiple times.
+ Made and fixed a few other logic issues
*Added preliminary support for macOS 13 Ventura. Since final details (full system requirements) have not yet been released, I have simply based those on Monterey support for now.
* Ventura support will be reported as `Ventura*` until full specs can be specified within the script.
* (Much quicker to the punch this year)
* Improved a regex check (i.e. checking for "spaces" in Bash regex)
* Fixed a condition's operator error
* Bash built-in cannot compare float based integers via mathematical operators
+ Massive update to the check System Extension logic
+ Making a single call to get the contents of `/Library/SystemExtensions/db.plist` instead of multiple
+ No longer using `systemextensionsctl list` as this is not reliable -- it's possible that it doesn't return results (ever)
+ Improved state checking, including version validation logic
+ Improved the logic to determine if the SysExt is staged or not
+ Fixed logic issue in the OS Version Support conditional
+ Updated logic related to working with `falconctl stats`
+ Moved locale checking logic to a more appropriate location
+ Reporting Invalid Customer ID _only_ if a CID value can be determined
+ Added function for working with PlistBuddy
+ Updated any existing PlistBuddy calls to work with this function
+ Updated comments in most functions
- Removed all support for v5 Sensors
- Removed conditional logic for unsupported v6 Sensors
- Removed checks for SIP status
+ Added the ability to pass multiple files and/or directories to be collected
+ Removed mutual exclusion from the defaults, file, and directory switch
+ Added logic to parse switches/values passed from Jamf Pro when using multiple values in each passed Script Parameter
+ Moved archiving logic to a function/context manager
+ Using built-in plistlib to read plists now
+ Standardizing functions
+ Added support for Monterey (Monterey Beta was picking up, but not release)
+ Fixed issue in logic where I had previously attempted to remove duplicate version information in the displayName and displayVersion attributes
+ Improved the System Extension check to remove the hardcoded index and instead, loop through all dictionaries in the array
+ Switched to an unofficially supported, but first party generated Network Filter state check that will be more reliable
- Allows the removal of the external Python3 call
+ Moved to a function as well
+ Moved SysExt, KEXT, and PPPC check logic into functions
+ Running SysExt, KEXT, and PPPC check logic even if sensor isn't loaded, to get additional info
+ Tweaked several of the "return values" verbiage
* SysExt logic:
+ Getting additional details before bailing out
* KEXT logic:
+ Added logic to check if unapproved KEXTs can be loaded _at all_
+ Updated logic that determines the current console user to no longer use the old Python method
+ Python3 compatibility; allow setting of a custom Python binary path
+ Renamed script
+ Updated logic that determines the current console user to no longer use the old Python method
+ Python3 compatibility; allow setting of a custom Python binary path
+ Renamed script
+ Miscellaneous code improvements
This version also includes contributions from @tantonw.
* \+ Added a check to see if the current running OS version is the same as "latest supported" based on model, if so, no reason to check further specifications
* (Again, help script execute faster where possible)
The NSURLVolumeAvailableCapacityForImportantUsageKey resource key returns 0 free space if no user is logged in to the Mac. NSURLVolumeAvailableCapacityKey doesn't have this issue, so use it instead if necessary.
* Major refactor
* \+ Switched to using Regex to determine which models _are not_ compatible with each OS versions
* This should make the logic much more reliable and easier to maintain going forward
* \- This also allowed the removal of model specific check functions, although the MacPro logic will still be required due to additional configuration and hardware checks
* Separated the model and upgrading to/from os version validation checks
* \- Removed unnecessary runtime calculations; instead hard coding static values that will not change
* \+ Improved required storage check to validate against technical space minimals depending on current OS version
* Moved logic around to only execute if needed, instead of wasting cycles
* Overall, script executes two-to-three times faster
* Renamed script
* Major refactor
* \+ Switched to using Regex to determine which models _are not_ compatible with each OS versions
* This should make the logic much more reliable and easier to maintain going forward
* \- This also allowed the removal of model specific check functions, although the MacPro logic will still be required due to additional configuration and hardware checks
* Separated the model and upgrading to/from os version validation checks
* \- Removed unnecessary runtime calculations; instead hard coding static values that will not change
* \+ Improved required storage check to validate against technical space minimals depending on current OS version
* Moved logic around to only execute if needed, instead of wasting cycles
* Overall, script executes two-to-three times faster
Revert change excluding 16,1 from Monterey.... Apple's numerous pages are vague, misleading, or incorrect.
https://support.apple.com/en-us/HT201634 - Shows that the iMac (Retina 5K, 27-inch, Mid 2015), Model Identifier: iMac15,1 still supports Monterey when it does not.
This script is now used in an AutoPkg recipe.
The recipe builds a pkg and uses this script as a postinstall script to provide a similar functionality as the previous revision.
This change will allow for quicker and easier support for updates to the Office Reset utility.