【问题标题】:AppleScript open location command not working with variableAppleScript 打开位置命令不适用于变量
【发布时间】:2022-11-11 15:46:08
【问题描述】:

以下脚本...

open location "smb://fileserver02.domain1.com.au/department"

按预期工作,它连接到驱动器并提示用户输入用户名和密码。

但是,当我尝试将域和用户名构建到命令中然后连接时,打开位置命令不起作用,没有错误它只是什么都不做。

set userName to do shell script "whoami"
set p to "\"smb:DOMAIN2\\" & userName & "@fileserver02.domain1.com.au/department\"" as string
open location p

我已经确认该字符串已正确构建到 p 变量中,并且如果我像这样键入命令,它就可以工作......

open location "smb:DOMAIN2\\RoryP@fileserver02.domain1.com.au/department"

当它包含在变量中时它不起作用......

非常感谢任何帮助,谢谢。

【问题讨论】:

  • 我想了一个更好的方法来用一个衬里做到这一点。执行 shell script "open 'smb://DOMAIN02\\$(whoami)@fileserver02.domain1.com.au/department'" 但它有时只能工作......我将确切的脚本文件复制到另一台计算机并运行它但是它不解析 $(whoami),它会打开一个凭据提示,用户名填写为“DOMAIN02\$(whoami)” 在我的设备上(运行完全相同的 macOS 版本)它解析 $(whoami) 并填写用户名字段正如预期的那样并连接到驱动器,非常奇怪。为什么它会解析一台设备上的变量而不解析另一台设备上的变量?

标签: bash macos applescript


【解决方案1】:

删除字符串开头和结尾的文字双引号。由于当前短用户名不能包含特殊字符,因此您无需转义整个字符串。

另一方面,要获得两个反斜杠,您必须同时转义。

set userName to do shell script "whoami"
set p to "smb:DOMAIN2\\" & userName & "@fileserver02.domain1.com.au/department"
open location p

【讨论】:

  • URL 不应该包含正斜杠吗?
  • 我正在转义 1 个反斜杠,因此是 2 个斜杠。生成的 p 值应为“smb:DOMAIN2RoryP@fileserver02.domain1.com.au/department”
  • 以这种格式指定一个域是一个反斜杠,例如 thedomain heusername@theserver.theotherdomain.com.au 在我的情况下,我们有多个域信任它们但是由于我们的防火墙设置中的一个模糊的怪癖,只能输入 1 个搜索域的含义我们必须指定不同位置的其他域
  • 然后删除两个反斜杠。
  • 是的,试过了,但没有运气。它现在切换到 Finder 作为活动窗口,但不连接到驱动器。
【解决方案2】:

不要在变量的两端加上转义引号。

set userName to do shell script "whoami"
set p to ("smb:DOMAIN2//" & userName & "@fileserver02.domain1.com.au/department") as string
open location p

【讨论】:

  • 变成 //
  • 我删除了转义的引号,但发现几乎相同的结果,脚本现在将活动窗口更改为 Finder,但它没有连接到驱动器。我还需要一个反斜杠,因此需要双反斜杠。
猜你喜欢
  • 2021-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2017-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多