欢迎各位兄弟 发布技术文章
这里的技术是共享的
我帮你分析了一下你的情况:
你的脚本在 Jamf Self Service 点击执行时能正常运行(能创建 downloadfromjamf
文件夹并下载 DMG),
但在 Jamf 策略设置为联网时自动执行时,就失败了(目录没创建,文件没下载)。
这通常和 运行上下文(Context)不同 有关。
Self Service 执行 → 脚本在用户环境下执行(有 $HOME
、有 Desktop 路径、带 GUI)。
策略自动触发执行 → 脚本在 root
环境下执行,没有 $HOME
这个变量(或者 $HOME=/var/root
),自然没有你期望的 ${HOME}/Desktop
。
所以:
${HOME}/Desktop
在 root
环境下其实是 /var/root/Desktop
,而不是你登录用户的桌面。
自动策略下执行时,文件夹就不会出现在你想要的桌面路径。
你需要在脚本里 明确指定当前登录用户的桌面路径,而不是用 $HOME
。 OK 有大用
Jamf 推荐的写法是:
✅ 这样写后:
不管是 Self Service 还是 自动触发策略,都会找到当前真正登录用户的桌面,而不是跑到 /var/root/Desktop
。
osascript
提示框也能正常弹出(因为用 su -l $CURRENT_USER
以用户身份执行)。
要不要我帮你精简一下脚本,把 curl + unzip + hdiutil + copy
部分封装成一个函数,避免重复出错?