+ 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.
+ Accounted for the scenario where the Falcon Service (falconctl stats) errored/failed to provide the expected info
+ This should correct devices reporting `Invalid Customer ID; SysExt not loaded` incorrectly
+ Fixed a logic error where only the _last_ system extension status (from `systemextensionsctl list`) is checked -- the last may not be the most recent
+ Added an additional "acceptable" system extension state that would result in a passed check (`activated waiting to upgrade`)
- Removed logic supporting older Sensor versions
+ Fixed issue where subprocess was returning bytes-like objects instead of string objects
+ Fixed incorrect argument check in an if statement
+ Switched to requests
+ Minor logic improvements
+ Added a local log to track EA value history since this function isn't available within Jamf Pro
+ Updated minimally "supported" OS Version to 10.14 (not supported, but will connect to the cloud)
+ Automatically reporting v5.x location sensors as not supported
- Removed logic for checking v5.x sensors
+ Reporting 6.17 and older sensor versions as not supported
+ Added success check for the Python3 filter_state check
+ Improved the system extension status check by creating an array to handle cases where multiple system extensions are present