Skip to content

Instantly share code, notes, and snippets.

@talkingmoose
talkingmoose / Hide Wi-Fi Menu.sh
Last active October 28, 2020 09:18
Quits the Wi-Fi menu item for the current user. Effectively unchecks the "Show Wi-Fi status in menu bar" item in System Preferences > Network.
#!/bin/zsh
# get current logged in user
currentUser=$( /usr/bin/stat -f "%Su" /dev/console )
echo "Current user is $currentUser"
# get current user home folder path
homeFolder=$( /usr/bin/dscl . read /Users/talkingmoose NFSHomeDirectory | /usr/bin/awk -F ": " '{ print $2 }' )
echo "Current user home folder is $homeFolder"
@talkingmoose
talkingmoose / Report admin status.bash
Created August 26, 2020 22:29
Report if any macOS user accounts with admin privileges exist.
#!/bin/bash
# list all users with UIDs above 501
usersList=$( /usr/bin/dscl . -list /Users uid | /usr/bin/awk '$2 >= 501 { print $1 }' )
# test for admin
while IFS= read aUser
do
/usr/sbin/dseditgroup -o checkmember -u "$aUser" admin 1>/dev/null
@talkingmoose
talkingmoose / Report unknown network services.zsh
Created August 3, 2020 03:19
Compares known and current network services and creates an unknown network services list.
#!/bin/zsh
# list of known network services that should be excluded from results
defaultNetworkServices="An asterisk (*) denotes that a network service is disabled.
USB-C Dock Ethernet
Apple USB Ethernet Adapter
Wi-Fi
iPhone USB
Bluetooth PAN
Thunderbolt Bridge"
@talkingmoose
talkingmoose / "Early Adopter" extension attribute
Last active November 21, 2023 22:31
Self Service policy to enable end users to enroll their Macs into an "Early Adopter Program" or any other type of enrollment. Create a Smart Computer Group to identify early adopters and scope policies.
#!/bin/zsh
enrollmentStatus=$( /usr/bin/defaults read '/Library/Preferences/EarlyAdopter.plist' Enrolled )
echo "<result>$enrollmentStatus</result>"
@talkingmoose
talkingmoose / Delete account from current user's Internet Accounts.sh
Last active June 21, 2023 19:24
Example for removing specific account from System Preferences > Internet Accounts for the current user.
#!/bin/bash
# get name of currently logged in user
currentUser=$( /usr/bin/stat -f "%Su" /dev/console )
echo "Current user is $currentUser."
# get current user's home folder
homeFolder=$( /usr/bin/dscl . read "/Users/$currentUser" NFSHomeDirectory | /usr/bin/awk -F ": " '{ print $2 }' )
# remove account by description name from Accounts sqlite database
/usr/bin/sqlite3 "$homeFolder/Library/Accounts/Accounts4.sqlite" 'DELETE FROM ZACCOUNT WHERE ZACCOUNTDESCRIPTION = "Exchange"'
@talkingmoose
talkingmoose / Make new Outlook Address Book and Contact.applescript
Created July 23, 2020 21:28
Useful for when an admin needs to add a list of "safe" addresses to a user's Contacts but wants to keep them separate from the user's own contacts.
tell application "Microsoft Outlook"
make new address book in exchange account 1 with properties {name:"Company Contacts"}
make new contact with properties {first name:"Martin", last name:"Moose", email addresses:{{address:"[email protected]", type:work}, {address:"[email protected]", type:home}}} at address book "Company Contacts" of exchange account 1
end tell
@talkingmoose
talkingmoose / add-AD-user-data-to-Jamf-Pro.ps1
Last active March 11, 2022 04:02
Reads a pre-defined Advanced Computer Search and gets list of newly enrolled devices and their usernames. Looks up usernames in Active Directory and retrieves more user detail. Populates devices records with additional user in Jamf Pro.
# INSTRUCTIONS
# Create a folder on the Administrator Desktop named "Project"
# Run the script to generate the AES key
# Run the script to generate the Active Directory encrypted password file
# Run the script to generate the Jamf Pro encrypted password file
# Update the following variables:
# JamfProServer
@talkingmoose
talkingmoose / Big Sur-compatible Macs (regex)
Last active June 7, 2023 19:50
Regex looks for all Mac models compatible with macOS Big Sur. May not be up-to-date with newly released models.
Model information: https://support.apple.com/en-us/HT211238
Published Date: October 25, 2021
Verification: https://regex101.com/r/7nnq4T/13
This regex is complete. Apple is no longer creating Big Sur compatible Macs.
(MacBook(10|9|8)|MacBookAir(10|[6-9])|MacBookPro1[1-7]|Macmini[7-9]|MacPro[6-7]|iMacPro1),\d|iMac(14,4|1[5-9],\d|2[01],\d)
Resources for Jamf's "Script 201 for Apple Admins" webinar on June 18, 2020.
"Scripting 101 for Apple Admins" Webinar
Video: https://www.jamf.com/resources/webinars/scripting-101-for-apple-admins/
Discussions: https://www.jamf.com/jamf-nation/discussions/32391/scripting-101-for-apple-admins-webinar
PDF reference: https://www.jamf.com/blog/scripting-basics-for-everyone/
Time Zone script:
https://www.jamf.com/jamf-nation/third-party-products/files/836/settimezone-sh-set-the-time-zone
@talkingmoose
talkingmoose / Another Rename Computer Script.bash
Last active December 23, 2021 21:18
Jamf, Catalina and osascript compatible. Prompts to choose a site and enter an asset tag before renaming the Mac and then updating Jamf Pro.
#!/bin/sh
# wait until the Dock process has started
while [[ "$setupProcess" = "" ]]
do
echo "Waiting for Dock"
setupProcess=$( /usr/bin/pgrep "Dock" )
sleep 3
done