【问题标题】:Applescript - spctl --statusApplescript - spctl --status
【发布时间】:2017-12-15 10:06:02
【问题描述】:

我想在我的 applescript 命令中切换启用/禁用。似乎无法确定此脚本有什么问题。当我再次运行相同的命令时,它不会切换其状态(切换):

如果 {"disabled"} 包含 (do shell script "spctl --status") 那么 将允许设置为“启用” 别的 将允许设置为“禁用” 万一 以管理员权限执行 shell 脚本 (("sudo spctl --master-" & theAllow) as string)

enter image description here

【问题讨论】:

  • 当你运行(执行 shell 脚本“spctl --status”)它返回什么?我得到了“启用评估”。我认为您需要修改列表中的字符串以匹配返回的内容。

标签: applescript


【解决方案1】:

查看spctlsource code,spctl --status 命令 将返回assessments enabledassessments disabled。但是,如果它禁用,那么do shell script "spctl --status" 会以error "assessments disabled" number 1 退出,您需要以某种方式对其进行说明。

do shell script "spctl --status"
    --> error "assessments disabled" number 1

所以,为了简单起见,以下示例 AppleScript 代码 只是简单地切换@987654330 的状态 @ 基于它状态

if (do shell script "spctl --status; exit 0") is "assessments disabled" then
    do shell script "spctl --master-enable" with administrator privileges
else
    do shell script "spctl --master-disable" with administrator privileges
end if

使用; exit 0 处理error "assessments disabled" number 1 时禁用spctl 时的示例输出:

do shell script "spctl --status; exit 0"
    --> "assessments disabled"
do shell script "spctl --master-enable" with administrator privileges

如您所见,通过在spctl --status 之后使用; exit 0,它会停止error "assessments disabled" number 1 并允许脚本继续运行。

当然有不止一种方法可以捕获错误,但是,这个示例 AppleScript 代码,这只是切换spctl状态,我已经展示了它的错误处理,它简单明了,不需要更详细。

否则,您将不得不以不同的方式对其进行编码,使用包裹在do shell script "spctl --status 命令 周围的try 语句on error 处理程序

【讨论】:

【解决方案2】:

你可以交换两个项目

if (do shell script "spctl --status") contains "disabled"

假设返回的字符串是“assessments disabled”,并且只有一项需要检查。

【讨论】:

    猜你喜欢
    • 2017-05-17
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    相关资源
    最近更新 更多