Skip to content

Instantly share code, notes, and snippets.

@talkingmoose
Last active December 7, 2024 10:51
Show Gist options
  • Save talkingmoose/4be6ae23c687469098c43fb6f9c06eab to your computer and use it in GitHub Desktop.
Save talkingmoose/4be6ae23c687469098c43fb6f9c06eab to your computer and use it in GitHub Desktop.
Simple script to create a new macOS user account. Will not provide a SecureToken.
#!/bin/zsh
# new user account details
username="lapsadmin"
displayName="LAPS Admin"
password="P@55w0rd"
admin="yes"
hidden="yes"
# determine next available UID
highestUID=$( dscl . -list /Users UniqueID | /usr/bin/awk '$2>m {m=$2} END { print m }' )
nextUID=$(( highestUID+1 ))
# create the account
/usr/bin/dscl . create "/Users/$username"
/usr/bin/dscl . create "/Users/$username" UserShell /bin/zsh
/usr/bin/dscl . create "/Users/$username" RealName "$displayName"
/usr/bin/dscl . create "/Users/$username" UniqueID "$nextUID"
/usr/bin/dscl . create "/Users/$username" PrimaryGroupID 20
/usr/bin/dscl . passwd "/Users/$username" "$password"
# make the account admin, if specified
if [[ "$admin" = "yes" ]]; then
/usr/bin/dscl . append /Groups/admin GroupMembership "$username"
fi
# hide the account, if specified
if [[ "$hidden" = "yes" ]]; then
/usr/bin/dscl . create "/Users/$username" IsHidden 1
/usr/bin/dscl . create "/Users/$username" NFSHomeDirectory "/private/var/$username"
else
/usr/bin/dscl . create "/Users/$username" NFSHomeDirectory "/Users/$username"
fi
@BDat80
Copy link

BDat80 commented Apr 3, 2024

Thanks a lot @talkingmoose, this is working!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment