【发布时间】:2023-03-15 17:17:01
【问题描述】:
我创建了一个自定义资源 gmsa 来创建 Windows Active Directory 组托管服务帐户。调用此自定义资源时,我收到一条有趣的错误消息,我目前在我的 Jenkins 管道厨房测试中非常一致,但在我的本地厨房测试中却没有:
================================================================================
Error executing action `create` on resource 'gmsa[gMSA.sql]'
================================================================================
SystemCallError
---------------
The filename or extension is too long. - CreateProcessAsUserW failed.
Cookbook Trace:
---------------
C:/Users/ADMINI~1/AppData/Local/Temp/kitchen/cache/cookbooks/adr_env_common/resources/gmsa.rb:123:in `ps_ad_object'
C:/Users/ADMINI~1/AppData/Local/Temp/kitchen/cache/cookbooks/adr_env_common/resources/gmsa.rb:154:in `alternate_id_from_dn'
C:/Users/ADMINI~1/AppData/Local/Temp/kitchen/cache/cookbooks/adr_env_common/resources/gmsa.rb:241:in `block in class_from_file'
gmsa.rb 文件中对第 123 行的引用是对 powershell_out 的调用
我很好奇powershell_out 是否正在尝试创建一个临时文件并且它遇到了文件路径字符限制(我相信这对于 Windows 来说是 260 个字符)
有没有其他人在使用powershell_out 方法时遇到过类似的情况?如果是这样,对解决方法或解决方案有什么想法吗?
非常感谢任何帮助!
编辑(2020 年 7 月 8 日):
我尝试在调用自定义资源之前添加以下注册表设置,看看它是否允许绕过 260 个字符的文件名限制,但没有运气:
registry_key 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem' do
values [{
name: 'LongPathsEnabled',
type: :dword,
data: 1
}]
action :create
notifies :reboot_now, 'reboot[Reboot For Registry Setting]', :immediately
end
reboot 'Reboot For Registry Setting' do
action :nothing
reason 'Cannot continue Chef run without a reboot.'
delay_mins 1
end
【问题讨论】:
标签: ruby windows powershell chef-infra