我正在尝试运行 New-WdsClient PowerShell cmdlet 或 wdsutil /add-device,我真的不在乎最终使用哪个,只要它有效。
当我运行 'wdsutil.exe /add-device /device:new_client /id:aabbccddeeff /BootImagePath:"Boot\x64\Images\boot-(6).wim" ' 它工作,当我从 Ansible 运行相同的我得到
"stdout_lines": [
"",
"Windows Deployment Services Management Utility [Version 10.0.14393.0]",
"© 2016 Microsoft Corporation. All rights reserved.",
"",
"",
"An error occurred while trying to execute the command.",
"Error Code: 0xC103013A",
"Error Description: The specified server name is invalid or does not exist in the directory service.",
""
我完全被难住了。
Ansible 的作用只是:
- name: Pre Stage WDS Client
win_command: powershell.exe -
args:
stdin: 'wdsutil.exe /add-device /device:{{ var_wds_client_name }} /id:{{ var_wds_client_mac }} /BootImagePath:"Boot\x64\Images\boot-(6).wim"'
使用 New-WdsClient 我什至没有走到这一步......
有任何想法吗?
-- 编辑 1 --
当我将 win_whoami 作为临时运行时,它可以工作:
ansible wds-server --become --become-method runas --become-user DOMAIN\Administrator --module-name win_whoami 2> /dev/null| egrep "SeDebug|High"
"account_name": "High Mandatory Level",
"account_name": "High Mandatory Level",
"SeDebugPrivilege": "enabled"
当我以 adhoc 方式运行 wdsutil 时,
ansible wds-server --become --become-method runas --become-user DOMAIN\Administrator --module-name win_command -a "wdsutil.exe /add-device /device:client /id:0001a5a0c267 /BootImagePath:Boot\x64\Images\boot-(6).wim"
我得到:
Windows Deployment Services Management Utility [Version 10.0.14393.0]
© 2016 Microsoft Corporation. All rights reserved.
An error occurred while trying to execute the command.
Error Code: 0xC103013A
Error Description: The specified server name is invalid or does not exist in the directory service.
non-zero return code
这是一个猜测,因为我没有方便的 Windows WDS 部署来执行测试。
wdsutil
根据Microsoft Docs的说法,我认为由于缺乏所需的提升权限,该任务没有通过 Ansible 运行。您可能需要使用become
关键字才能使任务起作用:或者,或者,
wdsutil
直接调用:使用以下临时调用检查是否授予 Ansible 管理权限:
返回的 JSON 对象应将
privileges.SeDebugPrivilege
属性设置为enabled
.参考:https ://docs.ansible.com/ansible/latest/user_guide/become.html#administrative-rights
首先,向大家道歉。
Ansible 服务是一个 RHEL 盒子,它实际上与一个中间 Windows 盒子对话,后者随后与 WDS 服务器对话。
我的一位同事发现这个链接为我们解决了这个问题。
谢谢大家的建议。