#!/bin/sh # # Microsoft AutoUpdate Helper for Jamf Pro # Script Version 1.2 # ## Copyright (c) 2018 Microsoft Corp. All rights reserved. ## Scripts are not supported under any Microsoft standard support program or service. The scripts are provided AS IS without warranty of any kind. ## Microsoft disclaims all implied warranties including, without limitation, any implied warranties of merchantability or of fitness for a ## particular purpose. The entire risk arising out of the use or performance of the scripts and documentation remains with you. In no event shall ## Microsoft, its authors, or anyone else involved in the creation, production, or delivery of the scripts be liable for any damages whatsoever ## (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary ## loss) arising out of the use of or inability to use the sample scripts or documentation, even if Microsoft has been advised of the possibility ## of such damages. ## Feedback: pbowden@microsoft.com # IT Admin constants for which applications to update [set to true or false as required] UPDATE_WORD="true" UPDATE_EXCEL="true" UPDATE_POWERPOINT="true" UPDATE_OUTLOOK="true" UPDATE_ONENOTE="true" UPDATE_SKYPEBUSINESS="true" UPDATE_REMOTEDESKTOP="true" UPDATE_COMPANYPORTAL="false" # IT Admin constants for application target version [set to "latest" to get latest update, or specific build number, such as "15.41.17120500"] VERSION_WORD="latest" VERSION_EXCEL="latest" VERSION_POWERPOINT="latest" VERSION_OUTLOOK="latest" VERSION_ONENOTE="latest" VERSION_SKYPEBUSINESS="latest" VERSION_REMOTEDESKTOP="latest" VERSION_COMPANYPORTAL="latest" # IT Admin constants for application path PATH_WORD="/Applications/Microsoft Word.app" PATH_EXCEL="/Applications/Microsoft Excel.app" PATH_POWERPOINT="/Applications/Microsoft PowerPoint.app" PATH_OUTLOOK="/Applications/Microsoft Outlook.app" PATH_ONENOTE="/Applications/Microsoft OneNote.app" PATH_SKYPEBUSINESS="/Applications/Skype for Business.app" PATH_REMOTEDESKTOP="/Applications/Microsoft Remote Desktop.app" PATH_COMPANYPORTAL="/Applications/Company Portal.app" # Function to enable debug logging function Debug() { if [ "$OVERRIDE_DEBUG" == "true" ] || [ "$OVERRIDE_DEBUG" == "TRUE" ] || [ "$OVERRIDE_DEBUG" == "True" ] || [ "$OVERRIDE_DEBUG" == "YES" ] || [ "$OVERRIDE_DEBUG" == "yes" ] || [ "$OVERRIDE_DEBUG" == "Yes" ]; then LOG=$(date; echo "$1") echo "$LOG" fi } # Harvest script parameter overrides OVERRIDE_DEBUG="$4" OVERRIDE_WORD="$5" Debug "OVERRIDE_WORD: $5" OVERRIDE_EXCEL="$6" Debug "OVERRIDE_EXCEL: $6" OVERRIDE_POWERPOINT="$7" Debug "OVERRIDE_POWERPOINT: $7" OVERRIDE_OUTLOOK="$8" Debug "OVERRIDE_OUTLOOK: $8" OVERRIDE_SKYPEBUSINESS="$9" Debug "OVERRIDE_SKYPEBUSINESS: $9" OVERRIDE_ONENOTE="${10}" Debug "OVERRIDE_ONENOTE: ${10}" OVERRIDE_REMOTEDESKTOP="${11}" Debug "OVERRIDE_REMOTEDESKTOP: ${11}" # Function to evaluate app update override function GetUpdateOverride() { if [ ! "$1" = "" ]; then local UPDATE_FIELD1=$(echo "$1" | cut -d '@' -f1) if [ "$UPDATE_FIELD1" == "TRUE" ] || [ "$UPDATE_FIELD1" == "true" ] || [ "$UPDATE_FIELD1" == "True" ] || [ "$UPDATE_FIELD1" == "YES" ] || [ "$UPDATE_FIELD1" == "yes" ] || [ "$UPDATE_FIELD1" == "Yes" ]; then echo "true" elif [ "$UPDATE_FIELD1" == "FALSE" ] || [ "$UPDATE_FIELD1" == "false" ] || [ "$UPDATE_FIELD1" == "False" ] || [ "$UPDATE_FIELD1" == "NO" ] || [ "$UPDATE_FIELD1" == "no" ] || [ "$UPDATE_FIELD1" == "No" ]; then echo "false" fi else echo "$2" fi } # Function to evaluate app version override function GetVersionOverride() { if [ ! "$1" = "" ]; then local UPDATE_FIELD2=$(echo "$1" | cut -d '@' -f2) if [ "$UPDATE_FIELD2" == "TRUE" ] || [ "$UPDATE_FIELD2" == "true" ] || [ "$UPDATE_FIELD2" == "True" ] || [ "$UPDATE_FIELD2" == "YES" ] || [ "$UPDATE_FIELD2" == "yes" ] || [ "$UPDATE_FIELD2" == "Yes" ] || [ "$UPDATE_FIELD2" == "FALSE" ] || [ "$UPDATE_FIELD2" == "false" ] || [ "$UPDATE_FIELD2" == "False" ] || [ "$UPDATE_FIELD2" == "NO" ] || [ "$UPDATE_FIELD2" == "no" ] || [ "$UPDATE_FIELD2" == "No" ] ; then echo "$2" else echo "$UPDATE_FIELD2" fi else echo "$2" fi } # Function to parse script parameter overrides function GetOverrides() { UPDATE_WORD=$(GetUpdateOverride "$OVERRIDE_WORD" "$UPDATE_WORD") Debug "Resolved UPDATE_WORD: $UPDATE_WORD" VERSION_WORD=$(GetVersionOverride "$OVERRIDE_WORD" "$VERSION_WORD") Debug "Resolved VERSION_WORD: $VERSION_WORD" UPDATE_EXCEL=$(GetUpdateOverride "$OVERRIDE_EXCEL" "$UPDATE_EXCEL") Debug "Resolved UPDATE_EXCEL: $UPDATE_EXCEL" VERSION_EXCEL=$(GetVersionOverride "$OVERRIDE_EXCEL" "$VERSION_EXCEL") Debug "Resolved VERSION_EXCEL: $VERSION_EXCEL" UPDATE_POWERPOINT=$(GetUpdateOverride "$OVERRIDE_POWERPOINT" "$UPDATE_POWERPOINT") Debug "Resolved UPDATE_POWERPOINT: $UPDATE_POWERPOINT" VERSION_POWERPOINT=$(GetVersionOverride "$OVERRIDE_POWERPOINT" "$VERSION_POWERPOINT") Debug "Resolved VERSION_POWERPOINT: $VERSION_POWERPOINT" UPDATE_OUTLOOK=$(GetUpdateOverride "$OVERRIDE_OUTLOOK" "$UPDATE_OUTLOOK") Debug "Resolved UPDATE_OUTLOOK: $UPDATE_OUTLOOK" VERSION_OUTLOOK=$(GetVersionOverride "$OVERRIDE_OUTLOOK" "$VERSION_OUTLOOK") Debug "Resolved VERSION_OUTLOOK: $VERSION_OUTLOOK" UPDATE_SKYPEBUSINESS=$(GetUpdateOverride "$OVERRIDE_SKYPEBUSINESS" "$UPDATE_SKYPEBUSINESS") Debug "Resolved UPDATE_SKYPEBUSINESS: $UPDATE_SKYPEBUSINESS" VERSION_SKYPEBUSINESS=$(GetVersionOverride "$OVERRIDE_SKYPEBUSINESS" "$VERSION_SKYPEBUSINESS") Debug "Resolved VERSION_SKYPEBUSINESS: $VERSION_SKYPEBUSINESS" UPDATE_ONENOTE=$(GetUpdateOverride "$OVERRIDE_ONENOTE" "$UPDATE_ONENOTE") Debug "Resolved UPDATE_ONENOTE: $UPDATE_ONENOTE" VERSION_ONENOTE=$(GetVersionOverride "$OVERRIDE_ONENOTE" "$VERSION_ONENOTE") Debug "Resolved VERSION_ONENOTE: $VERSION_ONENOTE" UPDATE_REMOTEDESKTOP=$(GetUpdateOverride "$OVERRIDE_REMOTEDESKTOP" "$UPDATE_REMOTEDESKTOP") Debug "Resolved UPDATE_REMOTEDESKTOP: $UPDATE_REMOTEDESKTOP" VERSION_REMOTEDESKTOP=$(GetVersionOverride "$OVERRIDE_REMOTEDESKTOP" "$VERSION_REMOTEDESKTOP") Debug "Resolved VERSION_REMOTEDESKTOP: $VERSION_REMOTEDESKTOP" } # Function to check whether MAU 3.18 or later command-line updates are available function CheckMAUInstall() { if [ ! -e "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" ]; then echo "MAU 3.18 or later is required!" exit 1 fi } # Function to check whether Office apps are installed function CheckAppInstall() { if [ ! -e "$PATH_WORD" ]; then Debug "Word is not installed" UPDATE_WORD="false" fi if [ ! -e "$PATH_EXCEL" ]; then Debug "Excel is not installed" UPDATE_EXCEL="false" fi if [ ! -e "$PATH_POWERPOINT" ]; then Debug "PowerPoint is not installed" UPDATE_POWERPOINT="false" fi if [ ! -e "$PATH_OUTLOOK" ]; then Debug "Outlook is not installed" UPDATE_OUTLOOK="false" fi if [ ! -e "$PATH_ONENOTE" ]; then Debug "OneNote is not installed" UPDATE_ONENOTE="false" fi if [ ! -e "$PATH_SKYPEBUSINESS" ]; then Debug "Skype for Business is not installed" UPDATE_SKYPEBUSINESS="false" fi if [ ! -e "$PATH_REMOTEDESKTOP" ]; then Debug "Remote Desktop is not installed" UPDATE_REMOTEDESKTOP="false" fi if [ ! -e "$PATH_COMPANYPORTAL" ]; then Debug "Company Portal is not installed" UPDATE_COMPANYPORTAL="false" fi } # Function to determine the logged-in state of the Mac function DetermineLoginState() { CONSOLE=$(stat -f%Su /dev/console) if [ "$CONSOLE" == "root" ]; then echo "No user logged in" CMD_PREFIX="" else echo "User $CONSOLE is logged in" CMD_PREFIX="sudo -u $CONSOLE " fi Debug "Resolved CMD_PREFIX: $CMD_PREFIX" } # Function to set target version for app function SetTargetVersion() { if [ "$1" == "LATEST" ] || [ "$1" == "latest" ] || [ "$1" == "" ]; then TARGET_VERSION="" else TARGET_VERSION="--version ${1}" fi Debug "Final TARGET_VERSION: $TARGET_VERSION" } # Function to register an application with MAU function RegisterApp() { Debug "RegisterApp: Params - $1 $2" $(${CMD_PREFIX}defaults write com.microsoft.autoupdate2 Applications -dict-add "$1" "{ 'Application ID' = '$2'; LCID = 1033 ; }") } # Function to call 'msupdate' and update the target application function PerformUpdate() { Debug "PerformUpdate: ${CMD_PREFIX}/Library/Application\ Support/Microsoft/MAU2.0/Microsoft\ AutoUpdate.app/Contents/MacOS/msupdate --install --apps $1 $2 --wait 600 2>/dev/null" ${CMD_PREFIX}/Library/Application\ Support/Microsoft/MAU2.0/Microsoft\ AutoUpdate.app/Contents/MacOS/msupdate --install --apps $1 $2 --wait 600 2>/dev/null } ## MAIN CheckMAUInstall GetOverrides CheckAppInstall DetermineLoginState if [ "$UPDATE_WORD" == "true" ]; then Debug "Going for Word update" RegisterApp "$PATH_WORD" "MSWD15" SetTargetVersion "$VERSION_WORD" PerformUpdate "MSWD15" "$TARGET_VERSION" fi if [ "$UPDATE_EXCEL" == "true" ]; then Debug "Going for Excel update" RegisterApp "$PATH_EXCEL" "XCEL15" SetTargetVersion "$VERSION_EXCEL" PerformUpdate "XCEL15" "$TARGET_VERSION" fi if [ "$UPDATE_POWERPOINT" == "true" ]; then Debug "Going for PowerPoint update" RegisterApp "$PATH_POWERPOINT" "PPT315" SetTargetVersion "$VERSION_POWERPOINT" PerformUpdate "PPT315" "$TARGET_VERSION" fi if [ "$UPDATE_OUTLOOK" == "true" ]; then Debug "Going for Outlook update" RegisterApp "$PATH_OUTLOOK" "OPIM15" SetTargetVersion "$VERSION_OUTLOOK" PerformUpdate "OPIM15" "$TARGET_VERSION" fi if [ "$UPDATE_ONENOTE" == "true" ]; then Debug "Going for OneNote update" RegisterApp "$PATH_ONENOTE" "ONMC15" SetTargetVersion "$VERSION_ONENOTE" PerformUpdate "ONMC15" "$TARGET_VERSION" fi if [ "$UPDATE_SKYPEBUSINESS" == "true" ]; then Debug "Going for SfB update" RegisterApp "$PATH_SKYPEBUSINESS" "MSFB16" SetTargetVersion "$VERSION_SKYPEBUSINESS" PerformUpdate "MSFB16" "$TARGET_VERSION" fi if [ "$UPDATE_REMOTEDESKTOP" == "true" ]; then Debug "Going for Remote Desktop update" RegisterApp "$PATH_REMOTEDESKTOP" "MSRD10" SetTargetVersion "$VERSION_REMOTEDESKTOP" PerformUpdate "MSRD10" "$TARGET_VERSION" fi if [ "$UPDATE_COMPANYPORTAL" == "true" ]; then Debug "Going for Company Portal update" RegisterApp "$PATH_COMPANYPORTAL" "IMCP01" SetTargetVersion "$VERSION_COMPANYPORTAL" PerformUpdate "IMCP01" "$TARGET_VERSION" fi exit 0
Friday, April 13, 2018
https://files.slack.com/files-pri/T04QVKUQG-FA6ULU6J2/-.sh
https://files.slack.com/files-pri/T04QVKUQG-FA6ULU6J2/-.sh
Subscribe to:
Post Comments (Atom)
(33) Best Practices for Deploying Platform SSO with Microsoft Entra ID–Michael Epping, Mark Morowczynski - YouTube
(33) Best Practices for Deploying Platform SSO with Microsoft Entra ID–Michael Epping, Mark Morowczynski - YouTube
-
Monterrey and HP Printers | MacRumors Forums
-
[SOLVED] - Proxy configuration for template download | Proxmox Support Forum
-
TechBench by WZT (v4.1.1) : This website was created with simplicity in mind. Here you can easily download products directly from Microsoft....
No comments:
Post a Comment