除非明確提供憑證,否則 powershell AD 模組將無法透過 psession 運作

除非明確提供憑證,否則 powershell AD 模組將無法透過 psession 運作

新的 2016 核心伺服器出現問題。 (最近從2012r2遷移了一台伺服器)

在我們之前的 2012r2 伺服器上,我可以透過遠端 ps 會話(輸入 pssession oldservername)運行 powershell 腳本。現在在新伺服器上,我收到錯誤。

該腳本使用 AD 模組中的命令(get-aduser、get-adgroup 等)。

透過遠端會話運行時,會發生這種情況:

PS C:\> enter-pssession newserver
[newserver]: PS C:\> get-aduser username
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: (username:ADUser) [Get-ADUser], ADServerDownException
+ FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.GetADUser

但是,如果我指定為get-aduser username -Credential (Get-Credential),它工作正常。

如果我直接在伺服器上運行腳本(rdp 到它),它工作正常。

Invoke-Command -Session $sess -ScriptBlock {get-aduser username}也失敗了。

我假設 2016 年憑證的傳遞方式有所不同,這與此有關嗎?以前有人遇過這個嗎?有辦法解決嗎?

答案1

您基本上遇到了經典的 Kerberos 雙跳問題。您先前的 2012 R2 伺服器可能已針對某種形式的 Kerberos 委派進行了配置,而您的新伺服器(尚未)尚未配置。

這是一篇很棒的 Technet 部落格文章,詳細描述了與 PowerShell 相關的問題以及解決該問題的各種方法。

PowerShell 遠端 Kerberos 雙跳安全解決

相關內容