【发布时间】:2021-07-13 22:08:39
【问题描述】:
我有一个试图通过 chef 运行的 powershell 脚本。我正在使用 powershell 资源。我尝试了其他运行脚本的方法,但由于机器严格的访问控制,我只能使用 Chef powershell 资源。
我认为由于脚本中的这一特定行而导致运行失败:
$FileServerSharePath ='\\files.myshare.com\Public\SOFTWARE\mysoftware\LatestInstaller'
具体错误为:Invalid escape character syntax
这是我的食谱的示例:
powershell_script 'install-stuff' do
code <<-EOH
code stuff blah blah blah
EOH
end
我尝试转义双反斜杠,但仍然出现错误。我不确定我还能尝试什么来克服这个错误。我不是 Windows 人,所以谢谢你的帮助。
更新: 我认为这可能是我的服务器配置的特定问题。
【问题讨论】:
-
在常规 powershell 窗口中运行该行不会导致错误 - 我会尝试通过在非托管计算机中运行类似代码来确定导致错误的确切行。如果该行导致错误,则它是由厨师而不是由 powershell 引起的。
-
@LeeExothermix 直接在 Windows 中运行脚本不会产生任何错误,并且运行没有问题。所以,我尝试只是复制脚本并使用执行资源来运行脚本,但遇到了访问控制错误。
-
你能添加一些你的厨师资源定义吗? Chef 要求在它正在处理的文本中对 \ 进行转义,因此 UNC 路径最终看起来像
'\\\\server\\share\\file'。您是从 powershell 调用脚本文件,还是将脚本内容作为命令输入到 powershell? -
在
code块中完全按照您的问题使用Powershell 命令对我来说没有产生任何错误。
标签: windows powershell chef-infra