After additional research I was able to figure this out.
Result=$(/usr/bin/osascript -e 'tell application "Microsoft Outlook"' -e "get background autodiscover of every exchange account" -e 'end tell')
echo "<result> $Result </result>"
@jeffpugh - Just something you should be aware of. The 'tell application "Application Name"' syntax in Applescript will launch the targeted application if its not already running. This might mean that when your inventory collection occurs, if Microsoft Outlook isn't already active, it will launch it for the current logged in user. In cases where inventory collection runs when no-one is logged in, it will fail completely since it can't launch an app when sitting at the login window.
I'm not sure if that's acceptable to you or not, but I did want to make you aware of that.
If you'd rather that didn't happen, then one simple solution would be to first check to see if Outlook is running, and if true, then tell it to get its status, otherwise, report back something like "N/A" if its not running.
Thanks for the advise. I was actually in the middle of resolving this issue and with the help of your response was able to easily take care of this.
Current script is working
status=$(/usr/bin/osascript -e 'if application "Microsoft Outlook" is running then' -e 'tell application "Microsoft Outlook"' -e "get background autodiscover of every exchange account" -e 'end tell' -e 'else' -e 'return "Offline"' -e 'end if')
if [[ "${status}" == "true" ]]; then
result=Enabled
if [[ "${status}" == "Offline" ]]; then
result=Offine
else
result=Disabled
fi
echo "<result> $result </result>"
exit 0
Thanks @jeffpugh for the solution!
I modified the EA to write /read from a text file if the user isn't logged in or Outlook is closed
#!/bin/bash
#is Autodiscover on or off
#If user isn't logged in
loggedInUser=$( stat -f%Su /dev/console )
if [[ $loggedInUser = "root" ]] || [[ $loggedInUser = "yourlocaladmin1" ]] || [[ $loggedInUser = "yourlocaladmin2" ]]; then
#Does info file exist
if [ -f /Library/Application Support/JAMF/bin/Autodiscover.txt ]; then
Autodiscover=`cat /Library/Application Support/JAMF/bin/Autodiscover.txt`
#Yes
echo "<result>$Autodiscover</result>"
exit
else
#No text file or user is not logged in
echo "<result>EA not updated</result>"
exit
fi
fi
#--- user is logged in and Outlook is open
open=$( pgrep "Microsoft Outlook" )
if [[ "$open" -gt "0" ]]; then
Autodiscover=$(/usr/bin/osascript -e 'tell application "Microsoft Outlook"' -e "get background autodiscover of exchange account 1" -e 'end tell')
echo "$Autodiscover" > /Library/Application Support/JAMF/bin/Autodiscover.txt
echo "<result>$Autodiscover</result>"
exit 0
fi
#if Outlook is closed and text file exists
if [ -f /Library/Application Support/JAMF/bin/Autodiscover.txt ]; then
Autodiscover=`cat /Library/Application Support/JAMF/bin/Autodiscover.txt`
echo "<result>$Autodiscover</result>"
exit 0
fi
#if Outlook is closed and text file does not exist
echo "<result>EA not updated</result>"
exit 0
fi