查看此官方文档:https : //docs.chef.io/resource_template.html我看到了将变量传递给使用“{”、“({”或“(”) 来限定变量范围的模板资源的示例。
我找不到解释差异的地方或为什么我会使用一种形式而不是另一种形式。运行配方时真的有什么实际区别吗?
template '/tmp/config.conf' do
source 'config.conf.erb'
variables(
:config_var => node['configs']['config_var']
)
end
Run Code Online (Sandbox Code Playgroud)
template '/tmp/config.conf' do
source 'config.conf.erb'
variables{
:config_var => node['configs']['config_var']
}
end
Run Code Online (Sandbox Code Playgroud)
template '/tmp/config.conf' do
source 'config.conf.erb'
variables({
:config_var => node['configs']['config_var']
})
end
Run Code Online (Sandbox Code Playgroud) 尝试找出是否有环境变量或其他方法可以从简单的命令行脚本获取给定计算机的登录域。
该变量%USERDOMAIN%将为我提供我的用户所在的域 - 并且在域 trsut 场景中不会返回计算机的域,而是返回我的域。
我的想法是,我希望能够让我的 cmd 脚本代码不关心它所在的域,但能够在运行时确定该信息。
这里有 VBScript 方法:
Set objRootDSE = GetObject("LDAP://RootDSE")
strDomain = objRootDSE.Get("DefaultNamingContext")
WScript.Echo strDomain
Run Code Online (Sandbox Code Playgroud)
另一种方法是这样的:
net config workstation | findstr /C:"Workstation domain"
Run Code Online (Sandbox Code Playgroud)
其输出:
Workstation domain DOMAINNAME
Run Code Online (Sandbox Code Playgroud)
但由于没有相当于 unix 的命令行cut,我发现很难将此信息放入变量中。