New-ADUser“无法联系服务器”,但仅当通过 Ansible 的 WinRM 执行时

问题描述 投票:0回答:1

我编写了第一个 PowerShell 脚本来创建用于 Oracle Kerberos 身份验证的 Active Directory 对象。当使用专门为此目的创建的用户凭据通过计划任务运行时,它可以完美运行。然而,当通过 WinRM 远程执行时(使用 pywinrm 模块从 Ansible),它总是失败:

PS>TerminatingError(New-ADUser): "Unable to contact the server. This may be because this server does not exist, it is currently down, or it does not have the Active Directory Web Services running."

根据这篇信息丰富的博客文章中的建议,我在脚本中添加了

Get-ADDomainController -Discover -Service ADWS
,它正确识别了运行 Active Directory Web 服务的多个域控制器之一。我还尝试了
Test-NetConnection <DC> -port 9389
建议,并且可以在该端口上访问 DC。

请问您知道这里可能出了什么问题吗?或者我接下来可以采取哪些诊断步骤?我和我的 Windows 同事被困在这里。

windows powershell ansible active-directory winrm
1个回答
0
投票

计划任务运行的 PowerShell 版本是否与为 WinRM 配置的版本不同?如果 WinRM 使用的 PowerShell 版本恰好运行 PowerShell 7.4 预览版 5 或 6,那么这是最近在预览版 5 中出现的问题(也存在于上周发布的预览版 6 中):

此问题似乎导致大多数 Get-ADxxxx 命令返回您列出的错误。

其中一篇文章提到了 .NET 版本的问题,并且:“将在 net8 rc2 发布并且 pwsh 随之发布时修复。” - 但不幸的是没有给出时间。

帖子中看到的一种解决方法是使用“-Server”参数并指定域控制器 (DC) 的 IP 地址与名称(这会强制使用 NTLM 而不是 Kerberos)。我可以确认这是有效的,但不建议...因为在脚本中硬编码 DC,以及使用 IP 地址与 DNS 名称,是非常糟糕的做法,并且将脚本设置为将来会失败。

© www.soinside.com 2019 - 2024. All rights reserved.