Skip to main content
Question

Extension Attribute for Year of Mac without Model

  • July 14, 2020
  • 3 replies
  • 10 views

Forum|alt.badge.img+4

 

This script checks for if the Mac is an M1 Chip, then if it is not, will check for the OS. Depending on these conditions, the year will be read differently.

#!/bin/sh #Set variables for processor, apple chip, & operating system version

processor=$(/usr/sbin/sysctl -n machdep.cpu.brand_string )
AppleChip="Apple M1"
AppleChipYear=$(/usr/libexec/PlistBuddy -c "print :'CPU Names'" ~/Library/Preferences/com.apple.SystemProfiler.plist | tr ' ' ' ' | grep -e "M1, 20[0-9][0-9]" -e "20[0-9][0-9]" | sed 's/[[:punct:]]$//' )
os_ver=$(sw_vers -productVersion | awk -F. '{print $2}')
os_ver2=$(sw_vers -productVersion | awk -F. '{print $1}')

#check if the machine is an Apple M1 processor

if [[ "$processor" == *"$AppleChip"* ]]; then
echo "$AppleChipYear" else

#Check which operating system version is on the mac if not an Apple M1 chip processor

if [[ ${os_ver} -le 14 ]] && [[ ${os_ver2} -le 10 ]]; then plistFile="/System/Library/PrivateFrameworks/ServerInformation.framework/Versions/A/Resources/English.lproj/SIMachineAttributes.plist"
sysModel=$(sysctl hw.model | awk '{print $NF}')
modelYear=$(/usr/libexec/PlistBuddy -c "Print ${sysModel}:_LOCALIZABLE_:marketingModel" "$plistFile" | tr ' ' '\\n' | grep -o "20[0-9][0-9]") if [ ! -z "$modelYear" ]; then
echo "$modelYear"
else
echo "N/A"
fi
elif [[ ${os_ver} -ge 15 ]]; then plistFile="/System/Library/PrivateFrameworks/ServerInformation.framework/Versions/A/Resources/en.lproj/SIMachineAttributes.plist"
sysModel=$(sysctl hw.model | awk '{print $NF}') modelYear=$(/usr/libexec/PlistBuddy -c "Print ${sysModel}:_LOCALIZABLE_:marketingModel" "$plistFile" | tr ' ' '\\n' | grep -o "20[0-9][0-9]") if [ ! -z "$modelYear" ]; then
echo "$modelYear"
else
echo "N/A"
fi
elif [[ ${os_ver} -le 14 ]] && [[ ${os_ver2} -ge 11 ]]; then
plistFile="/System/Library/PrivateFrameworks/ServerInformation.framework/Versions/A/Resources/en.lproj/SIMachineAttributes.plist"
sysModel=$(sysctl hw.model | awk '{print $NF}')
modelYear=$(/usr/libexec/PlistBuddy -c "Print ${sysModel}:_LOCALIZABLE_:marketingModel" "$plistFile" | tr ' ' ' ' | grep -e "M1, 20[0-9][0-9]" -e "20[0-9][0-9]" | sed 's/[[:punct:]]$//')
if [ ! -z "$modelYear" ]; then
echo "$modelYear"
else
echo "N/A"
fi
fi
fi
#end
exit 0

 

 

3 replies

Forum|alt.badge.img+4
  • Contributor
  • September 23, 2021

@Steven5342 Can you post all script here with the update, thanks.


Forum|alt.badge.img+4
  • Author
  • Contributor
  • September 30, 2021

@jamflund I edited the post and the script should work now for all Mac computers.


mani2care
Forum|alt.badge.img+7
  • Contributor
  • December 27, 2022

Hi All i tried this script its not working at all M1 and intel both are having error any latest version script any one having it supported for all the mac devices