运行 来自 bash 的苹果脚本

Running apple script from bash

我有这个 Apple 脚本代码,可以在脚本编辑器应用程序中正常运行:

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 中运行脚本,我可以获得与将应用程序拖到垃圾箱时相同的对话框:“应用程序“Symantec Endpoint Protection”是托管系统扩展。如果您继续,这些扩展将被删除。”如果我只是 rm -rf 整个应用程序,我就不会得到。

对不起,如果我不能更清楚。有什么线索吗?

脚本编辑器(默认情况下)被授权将事件应用到其他应用程序。如果你想 运行 一个 AppleScript 来控制来自不同上下文的其他应用程序,你必须授予该新上下文的权限以控制其他应用程序。您可以通过将控制应用程序添加到系统偏好设置 ➦ 安全和隐私 ➦ 隐私的 'Accessibility' 部分来执行此操作。

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

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

我在 CodeRunner 中执行 AppleScript 的 Python 脚本遇到了非常相似的问题。我只是不知道如何手动将 CodeRunner 添加到系统偏好设置中 Security & PrivacyAutomation 部分。

最终对我有用的东西,可能对其他人也有用。我不得不在 CodeRunner 中手动触发 osascript 命令,以便获得允许 CodeRunner 控制 Apple Events 的提示。具体来说 System Events。我通过在 CodeRunner 中创建一个新的 shell 脚本文件并 运行 对它进行

来做到这一点。
#!/bin/bash

osascript -e 'tell App "System Events" to display dialog "Testing"'

在 运行 之后,系统提示我 allow CodeRunner 来控制 System Events。对于您的特定问题,您只想使用 AppleScript 运行 osascript 命令 Finder 而不是 System Events

osascript -e 'tell App "Finder to display dialog "Testing This"'

由于您使用的是 MDM,例如 Jamf,因此您应该能够创建隐私首选项策略控制 (PPPC) 配置文件并将其部署到 Mac 之前 运行宁剧本。您只想确保 Terminal 有权控制 FinderSystem Events.

PPPC Utility 是一款用于创建这些配置文件的出色应用程序。