Skip to main content
Solved

Bash Help required for Extension Attribute


JevermannNG
Forum|alt.badge.img+8

Hi,

I am trying to find all installed Apps from the Mac App Store which have not been purchased through the VPP/Self Service.

This is what I got with the help of an older Script from Craig Lindsey

#!/bin/bash # JAMF Extension Attribute that finds any MAS apps # that were NOT purchased through VPP # Based on Script from: Craig Lindsey for Starz 2017-2-10 checkMD=$(mdfind -onlyin /Applications/ 'kMDItemAppStoreReceiptIsVPPLicensed == "0"') #echo "### checkMD - $checkMD" if [ "$checkMD" = "" ] then echo "<result>Not Found</result>" exit 0 fi result="" mdfind -onlyin /Applications/ 'kMDItemAppStoreReceiptIsVPPLicensed == "0"' | while read VPPApp do AppName=$( echo "$VPPApp" | awk -F'/' '{print $NF}' | sed -e 's/^"//' -e 's/"$//') result+="$AppName" echo "### Result - $result" done echo -e "### Result-TEST - $result" #echo -e "<result>$result</result>" exit 0

 

And this is the Result I get

### Result - Push Diagnostics.app ### Result - Push Diagnostics.appiMazing Profile Editor.app ### Result-TEST -

 

How can I transfer the $result from the loop to the end of the script?
Thanks in advance!

Best answer by JevermannNG

Hi @daniel_behan 

thanks for the help, my "problem" is solved :-)
This is the EA which I use now:

#!/bin/bash # Extensions Atrribute: Find all appstore apps in /Applications # lists all apps not bought through VPP (Self Service) # Based on Scripts from Heiko Horn 2020-04-16 and Craig Lindsey for Starz 2017-2-10 checkMD=$(mdfind -onlyin /Applications/ 'kMDItemAppStoreReceiptIsVPPLicensed == "0"') #echo "### checkMD - $checkMD" if [ "$checkMD" = "" ] then echo "<result>Not Found</result>" exit 0 fi # initialise a array list arrAppStoreApps=() # search the metadata for apps that were installed from the app store arrAppStoreApps=$(mdfind -onlyin /Applications/ 'kMDItemAppStoreReceiptIsVPPLicensed == "0"') # sort the array list sorted=$(printf '%s\\n' "${arrAppStoreApps[@]} "|sort) echo "<result>${sorted}</result>"

 

And this is the output I was looking for:

<result>/Applications/Push Diagnostics.app /Applications/iMazing Profile Editor.app </result>
View original
Did this topic help you find an answer to your question?

4 replies

Forum|alt.badge.img+11
  • Valued Contributor
  • 196 replies
  • April 11, 2025

Here's the one I use to list App Store Apps, but I'm not parsing out which ones were assigned by VPP.

#!/bin/bash # Extensions Atrribute: Find all appstore apps on this mac # lists all apps from the apps store # written by Heiko Horn 2020-04-16 # initialise a array list arrAppStoreApps=() # search the metadata for apps that were installed from the app store arrAppStoreApps=$(mdfind "kMDItemAppStoreHasReceipt=1") # sort the array list sorted=$(printf '%s\\n' "${arrAppStoreApps[@]}"|sort) echo "<result>${sorted}</result>"

JevermannNG
Forum|alt.badge.img+8
  • Author
  • Valued Contributor
  • 136 replies
  • Answer
  • April 11, 2025

Hi @daniel_behan 

thanks for the help, my "problem" is solved :-)
This is the EA which I use now:

#!/bin/bash # Extensions Atrribute: Find all appstore apps in /Applications # lists all apps not bought through VPP (Self Service) # Based on Scripts from Heiko Horn 2020-04-16 and Craig Lindsey for Starz 2017-2-10 checkMD=$(mdfind -onlyin /Applications/ 'kMDItemAppStoreReceiptIsVPPLicensed == "0"') #echo "### checkMD - $checkMD" if [ "$checkMD" = "" ] then echo "<result>Not Found</result>" exit 0 fi # initialise a array list arrAppStoreApps=() # search the metadata for apps that were installed from the app store arrAppStoreApps=$(mdfind -onlyin /Applications/ 'kMDItemAppStoreReceiptIsVPPLicensed == "0"') # sort the array list sorted=$(printf '%s\\n' "${arrAppStoreApps[@]} "|sort) echo "<result>${sorted}</result>"

 

And this is the output I was looking for:

<result>/Applications/Push Diagnostics.app /Applications/iMazing Profile Editor.app </result>

Forum|alt.badge.img+11
  • Valued Contributor
  • 196 replies
  • April 11, 2025

@JevermannNG you may want to double check your EA.  For me it showed an App Store app that was not assigned via VPP.  This tweak seems to show me only VPP-assigned apps.

#!/bin/bash # Extensions Atrribute: Find all VPP Assigned appstore apps in /Applications # initialise a array list arrAppStoreApps=() # search the metadata for apps that were installed from the app store arrAppStoreApps=$(mdfind -onlyin /Applications/ 'kMDItemAppStoreReceiptIsVPPLicensed == "1"') # sort the array list sorted=$(printf '%s\\n' "${arrAppStoreApps[@]} "|sort) echo "<result>${sorted}</result>"

Forum|alt.badge.img+11
  • Valued Contributor
  • 196 replies
  • April 11, 2025

Nevermind.  I misread your post.  That's exactly what you were looking for.


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings