Skip to content

Instantly share code, notes, and snippets.

@karthikeyan-mac
Last active March 17, 2025 11:45
Show Gist options
  • Save karthikeyan-mac/e5f35431ba98ab8d1f7878a1109d777e to your computer and use it in GitHub Desktop.
Save karthikeyan-mac/e5f35431ba98ab8d1f7878a1109d777e to your computer and use it in GitHub Desktop.
#!/bin/bash
# Extension Attribute (EA) script to inventory software update deferral settings on macOS
# Author: Karthikeyan M
# Optimized Version
# Function to retrieve values from macOS preferences
get_pref() {
osascript -l JavaScript << EOS
ObjC.import('Foundation')
ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('com.apple.applicationaccess').objectForKey('$1'))
EOS
}
echo "<result>"
# Retrieve deferral settings
forceDelayedMajorSoftwareUpdates=$(get_pref "forceDelayedMajorSoftwareUpdates")
forceDelayedMinorSoftwareUpdates=$(get_pref "forceDelayedSoftwareUpdates")
forceDelayedAppSoftwareUpdates=$(get_pref "forceDelayedAppSoftwareUpdates")
# Check if no deferrals are applied
if [[ "$forceDelayedMajorSoftwareUpdates" != "true" && "$forceDelayedMinorSoftwareUpdates" != "true" && "$forceDelayedAppSoftwareUpdates" != "true" ]]; then
echo "No Update Deferrals"
else
# Print deferral settings only if they exist
echo "DelayMajorUpdate: $forceDelayedMajorSoftwareUpdates"
if [[ "$forceDelayedMajorSoftwareUpdates" == "true" ]]; then
majorOSDeferralDelay=$(get_pref "enforcedSoftwareUpdateMajorOSDeferredInstallDelay")
echo "DelayMajorUpdateDays: $majorOSDeferralDelay"
fi
echo "DelayMinorUpdate: $forceDelayedMinorSoftwareUpdates"
if [[ "$forceDelayedMinorSoftwareUpdates" == "true" ]]; then
minorOSDeferralDelay=$(get_pref "enforcedSoftwareUpdateMinorOSDeferredInstallDelay")
echo "DelayMinorUpdateDays: $minorOSDeferralDelay"
fi
echo "DelayNonOSUpdate: $forceDelayedAppSoftwareUpdates"
if [[ "$forceDelayedAppSoftwareUpdates" == "true" ]]; then
appOSDeferralDelay=$(get_pref "enforcedSoftwareUpdateNonOSDeferredInstallDelay")
echo "DelayNonOSUpdateDays: $appOSDeferralDelay"
fi
fi
echo "</result>"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment