Admin Account

[bash]新規ユーザー追加


#!/bin/bash
#com.cocolog-nifty.quicktimer.icefloe
#設定するユーザーID
#学籍や社員番号があれば関連づけるのも有効だけど
#セキュリティ上はユーザーと紐づかない番号が推奨
STR_SET_UID="555"
#ユーザー名ショート
STR_USER_NAME="quick_timer"
#ユーザー名フル
STR_USER_FULLNAME="QuickTimer"
#グループID
STR_GID="20"
#シェル
STR_SHELL_PATH="/bin/zsh"
#パスワード
STR_PASSWORD="1234"
#パスワードヒント
STR_HINT="初期パスワードは書類に記載されています"
#ホームパス
STR_HOME_PATH="/Users/$STR_USER_NAME"
#アイコンパス
STR_PICTURE_PATH="/Library/User Pictures/Sports/Target.heic"

#################################################
###管理者インストールしているか?チェック
#################################################
USER_WHOAMI=$(/usr/bin/whoami)
/bin/echo "実行ユーザー(whoami): $USER_WHOAMI"
if [ "$USER_WHOAMI" != "root" ]; then
/bin/echo "このスクリプトを実行するには管理者権限が必要です。"
/bin/echo "sudo で実行してください"
  ### path to me
SCRIPT_PATH="${BASH_SOURCE[0]}"
/bin/echo "/usr/bin/sudo \"$SCRIPT_PATH\""
/bin/echo "↑を実行してください"
exit 1
else
  ###実行しているユーザー名
CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
/bin/echo "コンソールユーザー(scutil): $CONSOLE_USER"
  ###実行しているユーザー名
HOME_USER=$(/bin/echo "$HOME" | /usr/bin/awk -F'/' '{print $NF}')
/bin/echo "実行ユーザー(HOME): $HOME_USER"
  ###logname
LOGIN_NAME=$(/usr/bin/logname)
/bin/echo "ログイン名(logname): $LOGIN_NAME"
  ###UID
USER_NAME=$(/usr/bin/id -un)
/bin/echo "ユーザー名(id): $USER_NAME"
  ###STAT
STAT_USR=$(/usr/bin/stat -f%Su /dev/console)
/bin/echo "STAT_USR(console): $STAT_USR"
fi
########################################
/bin/echo "ユーザーIDの重複チェック"
########################################
TEXT_RESULT=$(/usr/bin/dscl localhost -list /Local/Default/Users UniqueID)
#リストにして
DEFAULT_IFS=$IFS
IFS=$'\n'
read -d '\n' -r -a LIST_USER <<<"$TEXT_RESULT"
IFS=$DEFAULT_IFS
#総当たりで調べます
for ITEM_LIST in "${LIST_USER[@]}"; do
  #ユーザーが存在するか?
  if [[ $ITEM_LIST == *"$STR_SET_UID"* ]]; then
TEXT_USER_INFO=$ITEM_LIST
  fi
done
#ユーザーが発見された場合
if [ -z "$TEXT_USER_INFO" ]; then
/bin/echo "未設定ですので処理を開始します"
else
/bin/echo "ユーザー:" "$TEXT_USER_INFO"
/bin/echo "$STR_SET_UID""ユーザーがいるので処理を終了します"
exit 1
fi
########################################
/bin/echo "ユーザーアカウント作成"
########################################
/usr/bin/sudo /usr/sbin/sysadminctl -addUser "$STR_USER_NAME" -fullName "$STR_USER_FULLNAME" -UID "$STR_SET_UID" -GID "$STR_GID" -shell "$STR_SHELL_PATH" -home "$STR_HOME_PATH" -picture "$STR_PICTURE_PATH" -password "$STR_PASSWORD" -hint "$STR_HINT" -admin
########################################
/bin/echo "パスワードリセット"
########################################
##ルートで処理する場合(非推奨)
## /usr/bin/printf "ルートパスワード" | /usr/bin/sudo /usr/bin/pwpolicy -a root -u "$STR_USER_NAME" -setpolicy "newPasswordRequired=1"
##初回ログイン時にパスワード設定
# /usr/bin/sudo /usr/bin/pwpolicy -u "$STR_USER_NAME" -setpolicy "newPasswordRequired=1"

########################################
/bin/echo "ユーザーフォルダ作成"
########################################
/bin/mkdir -p "$STR_HOME_PATH"
# 規定は700 アパッチ運用ある場合は755
/bin/chmod 755 "$STR_HOME_PATH"
/bin/chmod +a "group:everyone deny delete" "$STR_HOME_PATH"
#ユーザーテンプレートをコピー
/usr/bin/ditto "/Library/User Template/Japanese.lproj/.CFUserTextEncoding" "$STR_HOME_PATH/.CFUserTextEncoding"
########################################
/bin/echo "サブフォルダ作成"
########################################
LIST_SUB_DIR_NAME=("Library" "Desktop" "Documents" "Downloads" "Movies" "Music" "Pictures" "Public" "Groups" "Developer" "Sites" "Applications" "bin")
for ITEM_DIR_NAME in "${LIST_SUB_DIR_NAME[@]}"; do
STR_CHK_PATH="$STR_HOME_PATH/${ITEM_DIR_NAME}"
/bin/mkdir -p "$STR_CHK_PATH"
/bin/chmod 700 "$STR_CHK_PATH"
/bin/chmod +a "group:everyone deny delete" "$STR_CHK_PATH"
  #localized生成
/usr/bin/touch "$STR_CHK_PATH/.localized"
done
########################################
/bin/echo "Library サブフォルダ作成 "
########################################
LIST_SUB_DIR_NAME=("Compositions" "PreferencePanes" "Application Support" "Favorites" "Preferences" "Assistants" "FontCollections" "Printers" "Fonts" "Screen Savers" "Autosave Information" "Input Methods" "Services" "Caches" "Internet Plug-Ins" "Sounds" "ColorPickers" "Keyboard Layouts" "Spelling" "Colors" "Logs" "Group Containers" "Managed Items" "Managed Items/My Applications" "Managed Items/My Network" "Managed Items/Documents" "Audio" "Audio/MIDI Drivers" "Audio/Plug-Ins/Components" "Audio/Plug-Ins/Digidesign" "Audio/Plug-Ins/VST" "Audio/Sounds/Alerts" "Audio/Sounds/Banks")
for ITEM_DIR_NAME in "${LIST_SUB_DIR_NAME[@]}"; do
STR_CHK_PATH="$STR_HOME_PATH/Library/${ITEM_DIR_NAME}"
/bin/mkdir -p "$STR_CHK_PATH"
/bin/chmod 700 "$STR_CHK_PATH"
/bin/chmod +a "group:everyone deny delete" "$STR_CHK_PATH"
done
##可視にする場合
/usr/bin/chflags nohidden "/Users/$CONSOLE_USER/Library"
/usr/bin/SetFile -a v "/Users/$CONSOLE_USER/Library"
#不可視にする場合
# /usr/bin/chflags hidden "/Users/$CONSOLE_USER/Library"
# /usr/bin/SetFile -a V "/Users/$CONSOLE_USER/Library"
# binは不可視にする
/usr/bin/chflags hidden "/Users/$CONSOLE_USER/bin"
/usr/bin/SetFile -a V "/Users/$CONSOLE_USER/bin"
#ユーザーテンプレートをコピー
/usr/bin/ditto "/Library/User Template/Japanese.lproj/Library/FontCollections" "$STR_HOME_PATH/Library/FontCollections"
/usr/bin/ditto "/Library/User Template/Japanese.lproj/Library/Preferences" "$STR_HOME_PATH/Library/Preferences"

########################################
/bin/echo "Public サブフォルダ作成 "
########################################
/bin/chmod 755 "$STR_HOME_PATH/Public"
/bin/mkdir -p "$STR_HOME_PATH/Public/Drop Box"
/bin/chmod 733 "$STR_HOME_PATH/Public/Drop Box"
/bin/chmod +a "group:everyone deny delete" "$STR_HOME_PATH/Public/Drop Box"
/bin/chmod +a "user:$STR_USER_NAME allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit" "$STR_HOME_PATH/Public/Drop Box"
/usr/bin/touch "$STR_HOME_PATH/Public/Drop Box/.localized"

########################################
/bin/echo "アクセス権 オーナー指定"
########################################
/usr/sbin/chown -Rf "$STR_USER_NAME" "$STR_HOME_PATH"
/usr/bin/chgrp -Rf staff "$STR_HOME_PATH"
##
########################################
/bin/echo "Sites サブフォルダ作成 "
#Sites以下は削除可能でOK
########################################
# 規定は700 アパッチ運用ある場合は755
/bin/chmod 755 "$STR_HOME_PATH/Sites"
LIST_SUB_DIR_NAME=("images" "css" "js" "Streaming")
for ITEM_DIR_NAME in "${LIST_SUB_DIR_NAME[@]}"; do
STR_CHK_PATH="$STR_HOME_PATH/Sites/${ITEM_DIR_NAME}"
/bin/mkdir -p "$STR_CHK_PATH"
/bin/chmod 755 "$STR_CHK_PATH"
/usr/bin/chgrp -Rf _www "$STR_CHK_PATH"
done
/bin/chmod +a "group:_qtss allow read,write,execute" "$STR_HOME_PATH/Sites/Streaming"

  
exit 0




|

[sysadminctl]ゲストアカウントを無効にする


#!/bin/bash
#com.cocolog-nifty.quicktimer.icefloe
#
#################################################
###管理者インストールしているか?チェック
USER_WHOAMI=$(/usr/bin/whoami)
/bin/echo "実行ユーザー(whoami): $USER_WHOAMI"
if [ "$USER_WHOAMI" != "root" ]; then
/bin/echo "このスクリプトを実行するには管理者権限が必要です。"
/bin/echo "sudo で実行してください"
  ### path to me
SCRIPT_PATH="${BASH_SOURCE[0]}"
/bin/echo "/usr/bin/sudo \"$SCRIPT_PATH\""
/bin/echo "↑を実行してください"
exit 1
fi
########################################
##処理開始時のステータス
/usr/sbin/sysadminctl -guestAccount status

##ゲストアカウントをOFFにします
/usr/sbin/sysadminctl -guestAccount off
##起動時に削除する項目をROOTで作っておいて
ROOT_TRASH_DIR=$(/usr/bin/mktemp -d)
##Guestユーザーのホームディレクトリ
##エラーよけでタッチしておく
/usr/bin/touch /Users/Guest
##次回起動時に削除させる
/bin/mv /Users/Guest "$ROOT_TRASH_DIR"

##処理終了時のステータス
/usr/sbin/sysadminctl -guestAccount status

exit 0


|

[Mobileconfig]ゲストアカウントを無効にする

Screen-2_20240107161001

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>ConsentText</key>
  <dict>
    <key>default</key>
    <string>ccom.apple.MCX.DisableGuestAccount初期設定 (default)
この設定は削除しないでください
設定には管理者パスワードが必要です
</string>
    <key>en</key>
    <string>com.apple.MCX.DisableGuestAccount Preferences (en)
Please do not delete this setting.
Administrator password is required for this configuration.
</string>
    <key>ja</key>
    <string>com.apple.MCX.DisableGuestAccount 初期設定 (ja)
この設定は削除しないでください
設定には管理者パスワードが必要です
</string>
  </dict>
  <key>HasRemovalPasscode</key>
  <false/>
  <key>PayloadContent</key>
  <array>
    <dict>
      <key>DisableGuestAccount</key>
      <true/>
      <key>EnableGuestAccount</key>
      <false/>
      <key>PayloadDescription</key>
      <string>com.apple.MCX.DisableGuestAccount</string>
      <key>PayloadDisplayName</key>
      <string>com.apple.MCX.DisableGuestAccount</string>
      <key>PayloadIdentifier</key>
      <string>com.apple.MCX.8503A9FE-1AA5-409A-97FD-4917B3878E1C</string>
      <key>PayloadType</key>
      <string>com.apple.MCX</string>
      <key>PayloadUUID</key>
      <string>8503A9FE-1AA5-409A-97FD-4917B3878E1C</string>
      <key>PayloadVersion</key>
      <integer>20240107</integer>
    </dict>
  </array>
  <key>PayloadDescription</key>
  <string>com.apple.MCX.DisableGuestAccount</string>
  <key>PayloadDisplayName</key>
  <string>com.apple.MCX.DisableGuestAccount</string>
  <key>PayloadIdentifier</key>
  <string>disable.219E5038-C7E8-4DD8-AAA7-C5CB1F702FBA</string>
  <key>PayloadOrganization</key>
  <string>com.cocolog-nifty.quicktimer</string>
  <key>PayloadRemovalDisallowed</key>
  <false/>
  <key>PayloadScope</key>
  <string>System</string>
  <key>PayloadType</key>
  <string>Configuration</string>
  <key>PayloadUUID</key>
  <string>219E5038-C7E8-4DD8-AAA7-C5CB1F702FBA</string>
  <key>PayloadVersion</key>
  <integer>20240107</integer>
  <key>TargetDeviceType</key>
  <integer>0</integer>
</dict>
</plist>


|

OAH = com.apple.oahd(rosetta)

/usr/libexec/rosetta/oahd
/System/Library/LaunchDaemons/com.apple.oahd.plist
/System/Library/LaunchDaemons/com.apple.oahd-root-helper.plist
/System/Library/ProxySigningStubs/Library/Apple/usr/libexec/oah/libRosettaRuntime
/System/Library/PrivateFrameworks/OAHSoftwareUpdate.framework
UTI:com.apple.oahd
ユーザーname:_oahd
ユーザーRealName:OAH Daemon
ユーザーID:441
関連
com.apple.rosetta.report

【スクリプトエディタで開く】|

#!/bin/bash
#com.cocolog-nifty.quicktimer.icefloe
########################

ARCHITEC=$(/usr/bin/arch)
/bin/echo "Running on $ARCHITEC"
if [ "$ARCHITEC" == "arm64" ]; then
/usr/sbin/softwareupdate --install-rosetta --agree-to-license
fi
exit 0

ユーザー一覧
nobody-2
root0
daemon1
_uucp4
_taskgated13
_networkd24
_installassistant25
_lp26
_postfix27
_scsd31
_ces32
_appstore33
_mcxalr54
_appleevents55
_geod56
_devdocs59
_sandbox60
_mdnsresponder65
_ard67
_www70
_eppc71
_cvs72
_svn73
_mysql74
_sshd75
_qtss76
_cyrus77
_mailman78
_appserver79
_clamav82
_amavisd83
_jabber84
_appowner87
_windowserver88
_spotlight89
_tokend91
_securityagent92
_calendar93
_teamsserver94
_update_sharing95
_installer96
_atsserver97
_ftp98
_unknown99
_softwareupdate200
_coreaudiod202
_screensaver203
_locationd205
_trustevaluationagent208
_timezone210
_lda211
_cvmsroot212
_usbmuxd213
_dovecot214
_dpaudio215
_postgres216
_krbtgt217
_kadmin_admin218
_kadmin_changepw219
_devicemgr220
_webauthserver221
_netbios222
_warmd224
_dovenull227
_netstatistics228
_avbdeviced229
_krb_krbtgt230
_krb_kadmin231
_krb_changepw232
_krb_kerberos233
_krb_anonymous234
_assetcache235
_coremediaiod236
_launchservicesd239
_iconservices240
_distnote241
_nsurlsessiond242
_displaypolicyd244
_astris245
_krbfast246
_gamecontrollerd247
_mbsetupuser248
_ondemand249
_xserverdocs251
_wwwproxy252
_mobileasset253
_findmydevice254
_datadetectors257
_captiveagent258
_ctkd259
_applepay260
_hidd261
_cmiodalassistants262
_analyticsd263
_fpsd265
_timed266
_nearbyd268
_reportmemoryexception269
_driverkit270
_diskimagesiod271
_logd272
_appinstalld273
_installcoordinationd274
_demod275
_rmd277
_accessoryupdater278
_knowledgegraphd279
_coreml280
_sntpd281
_trustd282
_mmaintenanced283
_darwindaemon284
_notification_proxy285
_avphidbridge288
_biome289
_backgroundassets291
_oahd441

|

501ユーザーがすでに存在するか?確認する

【スクリプトエディタで開く】|

#!/bin/bash
#ユーザーIDの一覧を取得
TEXT_RESULT=$(/usr/bin/dscl localhost -list /Local/Default/Users UniqueID)
#リストにして
DEFAULT_IFS=$IFS
IFS=$'\n'
read -d '\n' -r -a LIST_USER <<<"$TEXT_RESULT"
IFS=$DEFAULT_IFS
#総当たりで調べます
for ITEM_LIST in "${LIST_USER[@]}"; do
  #501ユーザーが存在するか?
  if [[ $ITEM_LIST == *"501"* ]]; then
    TEXT_USER_INFO=$ITEM_LIST
  fi
done
#501ユーザーが発見された場合
if [ -z "$TEXT_USER_INFO" ]; then
  /bin/echo "501ユーザーがいない"
else
  /bin/echo "ユーザー:" "$TEXT_USER_INFO"
  /bin/echo "501ユーザーがいるので処理を終了します"
  exit 1
fi

exit 0

|

[bash]ローカルユーザーを取得する

【スクリプトエディタで開く】|

#!/bin/bash
###rootnobodyが入ります
TEXT_RESULT=$(/usr/bin/dscl localhost -list /Local/Default/Users |  grep -v  '^_')
read -d '\n' -r -a LIST_USER <<<"$TEXT_RESULT"
/bin/echo "${LIST_USER[@]}"

###ローカルユーザー取得はこちら
TEXT_RESULT=$(/usr/bin/dscl localhost -list /Local/Default/Users PrimaryGroupID | /usr/bin/awk '$2 == 20 { print $1 }')
read -d '\n' -r -a LIST_USER <<<"$TEXT_RESULT"
/bin/echo "${LIST_USER[@]}"

###ユーザー毎の繰り返し
for ITEM_LIST in "${LIST_USER[@]}"; do
/bin/echo "ユーザー名:" "$ITEM_LIST"

done

###ユーザー数
NUM_CNT_USER=${#LIST_USER[@]}
/bin/echo "ユーザー数:" "$NUM_CNT_USER"
###ユーザー数繰り返し
for NUM_CNT in $(seq 1 "$NUM_CNT_USER"); do
NUM_NO=$((NUM_CNT-1))
/bin/echo "ユーザー名:" "${LIST_USER[$NUM_NO]}"
done

|

[User]基本情報取得  System Event

【スクリプトエディタで開く】


#####ユーザー名
set listUserShortName to {} as list
tell application "System Events"
  set listUserAccount to every user
  repeat with itemUserAccount in listUserAccount
    set strItemName to name of itemUserAccount
    set the end of listUserShortName to strItemName
  end repeat
end tell
log listUserShortName


#####ユーザーホームディレクトリパス
set listUserHomeDir to {} as list
tell application "System Events"
  set listUserAccount to every user
  repeat with itemUserAccount in listUserAccount
    tell itemUserAccount
      set strItemHomeDir to home directory of itemUserAccount
      set the end of listUserHomeDir to strItemHomeDir
    end tell
  end repeat
end tell
log listUserHomeDir

#####ユーザーフルネーム
set listUserFullName to {} as list
tell application "System Events"
  set listUserAccount to every user
  repeat with itemUserAccount in listUserAccount
    tell itemUserAccount
      set strItemFullName to full name of itemUserAccount
      set the end of listUserFullName to strItemFullName
    end tell
  end repeat
end tell
log listUserFullName

|

[User]基本情報取得 

system eventを追加

【スクリプトエディタで開く】

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#error number -128
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"

use scripting additions

property refMe : a reference to current application

set appFileManager to refMe's NSFileManager's defaultManager()




#########################
####Foundation

###ユーザーName Short
set ocidUserShotName to refMe's NSUserName()
log ocidUserShotName as text
log className() of ocidUserShotName as text
-->(*__NSCFString*)

###ユーザーFullUserName
set ocidFullUserName to refMe's NSFullUserName()
log ocidFullUserName as text
log className() of ocidFullUserName as text
-->(*__NSCFString*)

###ホームディレクトリ パス
set ocidHomeDirectory to refMe's NSHomeDirectory()
log ocidHomeDirectory as text
log className() of ocidHomeDirectory as text
-->(*NSPathStore2*)

###指定ユーザーのホームディレクトリ
set ocidDirectoryForUser to refMe's NSHomeDirectoryForUser(ocidUserShotName)
log ocidDirectoryForUser as text
log className() of ocidDirectoryForUser as text
-->(*NSPathStore2*)

####################################
###NSFileManager
###指定ユーザーのホームディレクトリ
set ocidDirectoryForUserURL to appFileManager's homeDirectoryForUser:ocidUserShotName
log ocidDirectoryForUserURL as text
log className() of ocidDirectoryForUserURL as text
-->(*NSURL*)

###指定ユーザーのホームディレクトリ
set ocidDirectoryForCurrentUser to appFileManager's homeDirectoryForCurrentUser()
log ocidDirectoryForCurrentUser as text
log className() of ocidDirectoryForCurrentUser as text
-->(*NSURL*)

#########################
##### 従来方法

set objSysInfo to system info

###ユーザー名ショート
set strUserShotName to (short user name of objSysInfo) as text
###ユーザー名FULL
set strUserName to (long user name of objSysInfo) as text
###ユーザーID
set strUserID to (user ID of objSysInfo) as text
###ホームディレクトリ エイリアス
set aliasHomeDirectory to (home directory of objSysInfo) as alias
###ホスト名
set strComputerName to (computer name of objSysInfo) as text


tell application "System Events"
  set strUserName to full name of current user
  --> long user nameと同じ
end tell

## tell user "ユーザーショート名"
tell application "System Events"
  tell user strUserShotName
    set strUserName to full name
    --> long user nameと同じ
  end tell
end tell


#########################
#### コマンド

###ユーザーショート名
set strComandText to ("id -un") as text
set strUserName to (do shell script strComandText) as text

###ユーザーショート名
set strComandText to ("whoami") as text
set strUserName to (do shell script strComandText) as text


###ユーザーID
set strComandText to ("id -u") as text
set strUserID to (do shell script strComandText) as text

###ホームディレクトリ
set strComandText to ("echo $HOME") as text
set strHomeDir to (do shell script strComandText) as text

###ホスト名
set strComandText to ("hostname") as text
set strComputerName to (do shell script strComandText) as text

|

その他のカテゴリー

Acrobat Acrobat Annotation Acrobat Dialog Acrobat Form Acrobat JS Acrobat Open Acrobat Plugin Acrobat python Acrobat Reader Acrobat Sequ Acrobat Stamps Admin Admin Account Admin Apachectl Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Permission Admin Pkg Admin Power Management Admin Printer Admin SetUp Admin SMB Admin System Information Admin Tools Admin Users Admin Volumes Adobe Apple AppleScript AppleScript Guide AppleScript Accessibility AppleScript AppKit AppleScript Applications AppleScript AppStore AppleScript Archive AppleScript Attributes AppleScript Automator AppleScript AVAsset AppleScript AVconvert AppleScript AVFoundation AppleScript AVURLAsset AppleScript BackUp AppleScript Barcode AppleScript Bash AppleScript Basic AppleScript Basic Path AppleScript Bluetooth AppleScript BOX AppleScript Browser AppleScript Calendar AppleScript CD/DVD AppleScript Choose AppleScript Chrome AppleScript CIImage AppleScript CloudStorage AppleScript Color AppleScript com.apple.LaunchServices.OpenWith AppleScript Console AppleScript Contacts AppleScript CotEditor AppleScript CURL AppleScript current application AppleScript Date&Time AppleScript delimiters AppleScript Desktop AppleScript Device AppleScript Disk AppleScript do shell script AppleScript Dock AppleScript DropBox AppleScript eMail AppleScript Encode Decode AppleScript Error AppleScript EXIFData AppleScript ffmpeg AppleScript File AppleScript Finder AppleScript Firefox AppleScript Folder AppleScript Fonts AppleScript GIF AppleScript HTML AppleScript Icon AppleScript Illustrator AppleScript Image Events AppleScript Image2PDF AppleScript ImageOptim Applescript iWork AppleScript Javascript AppleScript Jedit AppleScript Json AppleScript Label AppleScript List AppleScript locationd AppleScript LRC AppleScript LSSharedFileList AppleScript m3u8 AppleScript MakePDF AppleScript Map AppleScript Math AppleScript Microsoft AppleScript Microsoft Edge AppleScript Microsoft Excel AppleScript Mobileconfig AppleScript Mouse AppleScript Movie AppleScript Music AppleScript NetWork AppleScript Notes AppleScript NSArray AppleScript NSBitmapImageRep AppleScript NSBundle AppleScript NSCFBoolean AppleScript NSCharacterSet AppleScript NSColor AppleScript NSColorList AppleScript NSData AppleScript NSDictionary AppleScript NSError AppleScript NSEvent AppleScript NSFileAttributes AppleScript NSFileManager AppleScript NSFont AppleScript NSFontManager AppleScript NSImage AppleScript NSIndex AppleScript NSKeyedArchiver AppleScript NSKeyedUnarchiver AppleScript NSLocale AppleScript NSMutableArray AppleScript NSMutableDictionary AppleScript NSMutableString AppleScript NSNotFound AppleScript NSNumber AppleScript NSOpenPanel AppleScript NSPasteboard AppleScript NSPDFImageRep AppleScript NSpoint AppleScript NSPredicate AppleScript NSRange AppleScript NSRegularExpression AppleScript NSRunningApplication AppleScript NSScreen AppleScript NSSize AppleScript NSString AppleScript NSStringCompareOptions AppleScript NSTask AppleScript NSTimeZone AppleScript NSURL AppleScript NSURL File AppleScript NSURLBookmark AppleScript NSURLComponents AppleScript NSURLResourceKey AppleScript NSUserDefaults AppleScript NSUUID AppleScript NSView AppleScript NSWorkspace AppleScript Numbers AppleScript OAuth AppleScript ObjC AppleScript OneDrive AppleScript Osax AppleScript PDF AppleScript PDFAnnotationWidget AppleScript PDFContext AppleScript PDFDisplayBox AppleScript PDFDocumentPermissions AppleScript PDFKit AppleScript PDFnUP AppleScript PDFOutline AppleScript Photos AppleScript Photoshop AppleScript Plist System Events AppleScript PostScript AppleScript prefPane AppleScript Preview AppleScript Python AppleScript QR AppleScript QR Decode AppleScript QuickLook AppleScript QuickTime AppleScript record AppleScript Regular Expression AppleScript Reminders AppleScript ReName AppleScript Repeat AppleScript RTF AppleScript Safari AppleScript SaveFile AppleScript ScreenCapture AppleScript ScreenSaver AppleScript Script Editor AppleScript Script Menu AppleScript Shortcuts AppleScript Shortcuts Events AppleScript Sort AppleScript Sound AppleScript Spotlight AppleScript SRT AppleScript StandardAdditions AppleScript stringByApplyingTransform AppleScript System Events AppleScript System Settings AppleScript TemporaryItems AppleScript Terminal AppleScript Text AppleScript Text CSV AppleScript Text TSV AppleScript TextEdit AppleScript Translate AppleScript Trash AppleScript Twitter AppleScript UI AppleScript Unit Conversion AppleScript UTType AppleScript valueForKeyPath AppleScript Video AppleScript VisionKit AppleScript Visual Studio Code AppleScript webarchive AppleScript webp AppleScript Wifi AppleScript XML AppleScript XML EPUB AppleScript XML OPML AppleScript XML Plist AppleScript XML RSS AppleScript XML SVG AppleScript XML TTML AppleScript XML webloc AppleScript YouTube AppleScript Zero Suppress Applications Barcode OnLine Tools CityCode Design iPhone List Logs lsappinfo Memo Music perl PlistBuddy pluginkit postalcode ReadMe SF Symbols character id SF Symbols Entity sips Skype Slack sqlite TCC Tools Typography Video Wacom zoom