欢迎各位兄弟 发布技术文章
这里的技术是共享的
jamf policy -id 112 调用了某一个策略 ,如何传递参数给策略的脚本 ,,,,,,jamf policy -event aaaaa 调用了某一个策略 ,如何传递参数给策略的脚本
这个问题其实踩坑的人不少 😊。我帮你梳理一下:
Jamf Policy → Scripts 里,你可以设置 Parameter 4 ~ Parameter 11(GUI 里写名字,脚本里通过 $4
~ $11
来取值)。
这些参数 不是运行时 jamf policy 触发时传递的,而是 绑定在 Policy 配置里的。
所以你执行
Jamf Agent 只会调用服务器上定义好的策略,并执行它绑定的脚本,同时把 GUI 里填的参数传给脚本。
👉 也就是说:jamf policy -event xxx
本身没法直接传 shell 参数进去。
有几种常见做法:
在 Policy → Scripts → Parameter Values 里写死,比如:
Parameter 4 = --clean
Parameter 5 = /tmp/test
脚本里取:
这样调用 jamf policy -event aaaaa
就能拿到这些值。
建一个策略,Trigger = aaaaa
。
脚本里从一个本地文件读取参数:
你在调用前写参数:
比如 EA 写入某个 key → 脚本里用 defaults read
或 jamf recon
抓。
适合需要「和机器绑定」的配置,而不是临时运行时参数。
如果参数固定几种,可以建多个策略,每个策略填不同参数。
通过不同 event trigger 调用:
✅ 总结:
jamf policy -event xxx
不能像 shell 那样直接传参数。
只能依靠 Policy → Parameter Values 配置,或者用 配置文件/环境变量/多策略 来变通。
要不要我给你写个 最常用的做法 Demo(比如 jamf policy -event deployapp
,参数写在 Jamf 控制台里,脚本里 $4
$5
读取)?
要
好 👍,我给你写一个 完整 Demo,展示如何在 Jamf 里通过 jamf policy -event deployapp
传参数给脚本。
新建一个 Policy,名字比如 "部署应用"。
在 General → Custom Event 填入:
✅ 这样就能用 jamf policy -event deployapp
来触发。
在 Scripts 里加一个脚本,并在 Parameter Labels 里写上参数说明:
在 GUI 上的效果大概是:
Parameter 4 → App 名称
Parameter 5 → 下载 URL
Parameter 6 → 安装路径
保存策略。
在任何终端(或其他脚本里)运行:
Jamf 就会执行后台的这个策略,并把你在 Policy → Scripts 里填好的 参数值 注入 $4/$5/$6
。
参数值是写死在 Jamf 控制台里的(不是 jamf policy -event
运行时传)。
不同 App 可以建多个策略,填不同参数。比如:
jamf policy -event deploychrome
jamf policy -event deployzoom
要不要我帮你写一个 「一套脚本,多策略调用不同软件」 的配置方案?这样你只维护一个脚本,参数在不同策略里填,就能通过不同 event
安装不同的软件。
要
好嘞 👍,我来帮你设计一个 一套脚本 + 多个策略 + 不同参数 的方案,这样你只需要维护一份脚本,就能在 Jamf 里通过不同的 event
来安装不同的软件。
脚本:通用安装器,只负责读取参数并执行安装。
策略:一个软件对应一个策略,不同策略填不同参数。
触发:每个策略用不同的自定义 event
,比如 deploy_chrome
、deploy_zoom
。
InstallApp.sh
上传到 Jamf Pro → Scripts 里。
General → Custom Event:deploy_chrome
Scripts → 参数配置:
Parameter 4 = Google Chrome
Parameter 5 = https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.pkg
Parameter 6 = /Applications
General → Custom Event:deploy_zoom
Scripts → 参数配置:
Parameter 4 = Zoom
Parameter 5 = https://zoom.us/client/latest/Zoom.pkg
Parameter 6 = /Applications
General → Custom Event:deploy_slack
Scripts → 参数配置:
Parameter 4 = Slack
Parameter 5 = https://downloads.slack-edge.com/releases/macos/Slack.pkg
Parameter 6 = /Applications
终端里运行:
Jamf 就会根据不同的 event 执行相应的策略,但脚本始终是同一份 InstallApp.sh
。
只维护一份脚本,减少重复。
策略参数化,新增软件只需要新建一个策略 + 填参数,不用复制脚本。
清晰可控,可以批量执行:
要不要我帮你再扩展一下,让这份脚本支持 .dmg
、.zip
软件包(不仅仅是 .pkg
)的安装?