繁体   English   中英

在远程 Powershell session 中使用 Active Directory cmdlet

[英]Using Active Directory cmdlets in a remote Powershell session

我需要能够在远程 session 中运行 Active Directory cmdlet,而不必每次都传递显式凭据。

这是我的设置:

ServerA:我从哪里开始。

ServerB:我使用 PS 远程处理/WinRM 远程访问的服务器

ServerC:域 controller 我正在尝试与之通信。

连接到 ServerB 后,我尝试联系 AD:

Get-ADUser frank -Server ServerC

这失败并出现以下错误:

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.
    + CategoryInfo          : ResourceUnavailable: (frank:ADUser) [Get-ADUser], ADServerDownException
    + FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.GetADUser

但是显式传递凭据:

Get-ADUser frank -Server ServerC -Credential $storedCredential

成功如你所料。

据我了解,第一个命令的失败是因为不允许 ServerB 将用于创建远程 session 的凭据传递给 ServerC。 我做了一些研究,我认为在这种情况下应该有效的解决方案是基于资源的约束 Kerberos 委派。

我已将 ServerB 添加到 ServerC 的 AD 计算机 object 的PrincipalsAllowedToDelegateToAccount属性中,但我仍然收到完全相同的错误消息。

我现在无法判断我是否弄乱了 RBCKD 配置,或者我是否以某种方式误解了它,这实际上并不是实现我想要做的事情的一种方式。 我也没有在 ServerB 或 ServerC 的日志中看到任何有用的信息来解释为什么对 AD 的调用被拒绝。

我的主要问题是:这应该工作吗? 如果是,我如何确定它失败的原因? 如果没有,我应该使用另一种解决方案吗?

• 我建议您检查是否在您的域环境中启用了以下组策略设置。 如果已启用,请禁用它,因为此设置将禁用 WinRM 服务的身份验证协议协商。

'组策略管理 -> 默认域策略 -> 编辑 -> 计算机配置 -> 管理模板 -> Windows 组件 -> Windows 远程管理 -> WinRM 服务 -> 禁止协商身份验证 -> 禁用'

• 完成上述操作后,通过主域 controller 和成员服务器上的“gpupdate /force”命令更新组策略设置。 然后在两者上重新启动 Windows 远程管理 (WS-MAN) 服务。 然后,请尝试将 IIS 应用程序池更改为在“本地系统”下运行并删除现有的 SPN,如下所示,然后重新连接到服务器 B 进行检查。 如果问题仍然存在,请在 IIS 管理控制台中禁用 Kernel 模式身份验证。

另外,我建议您通过执行以下命令,通过 powershell 命令行执行您想要作为远程 powershell 脚本的命令:-

Invoke-Command -ComputerName Server01, Server02 -FilePath c:\Scripts\ADUser.ps1

在“ADUser.ps1”脚本文件中,输入您需要在指定服务器上执行的命令。

欲知更多详情,请参阅以下链接:-

https://docs.microsoft.com/en-us/powershell/scripting/learn/remoting/running-remote-commands?view=powershell-7.2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM