从 bash 运行苹果脚本

问题描述

我有这个在脚本编辑器应用中运行良好的苹果脚本代码

tell application "Finder" to delete ((POSIX file "/Applications/Symantec Solutions/Symantec Endpoint Protection.app") as alias)

现在,我需要从我的 MDM 解决方案 (JAMF) 中运行它,所以我试图将它放入一个 bash 文件中,如下所示:

osascript -e "tell application \"Finder\" to delete (POSIX file \"/Applications/Symantec Solutions/Symantec Endpoint Protection.app\") as alias"

但是当从我的编辑器 (CodeRunner) 运行它时,它失败并显示:执行错误:无权将 Apple 事件发送到系统事件。 (-1743)

我认为这与隐私偏好政策控制有关,但我无法使其发挥作用。

我最终想要完成的是,通过从我的 MDM 运行脚本,我可以获得与将应用程序拖到 bin 时相同的对话框:“应用程序“Symantec Endpoint Protection”正在托管系统扩展。这些扩展将如果您继续,将被删除。”如果我只是 rm -rf 整个应用程序,我就无法理解。

对不起,我不能说得更清楚了。有什么线索吗?

解决方法

脚本编辑器(默认情况下)被授权将苹果事件发送到其他应用程序。如果您想运行 AppleScript 来控制来自不同上下文的其他应用程序,则必须授予该新上下文的权限以控制其他应用程序。为此,您可以将控制应用程序添加到系统偏好设置 ➦ 安全与隐私 ➦ 隐私的“辅助功能”部分。

当你经常改变上下文时,这会变得有点冒险。例如,您似乎正在使用 CodeRunner 执行 shell 脚本来执行 OSAScript,这可能会在任何级别上获得安全违规。尝试向 CodeRunner 授予权限,看看是否能解决问题。

,

非常感谢 Ted,这就是问题所在,链接了很多上下文。我不得不在 PPPC 的自动化部分的 CodeRunner 下勾选 Finder。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...