2017-08-19 103 views
0

這是我的場景,到目前爲止我還沒有找到解決方法:應用程序在Windows 2012 R2服務器(svr1,域成員)上運行,並且需要將域帳戶添加到svr2上的本地組,也一個域成員。DirectoryServices.AccountManagement.PrincipalContext是否在遠程Win 2012 R2服務器上工作?

使用ADSI到目前爲止還沒有爲我工作(仍在嘗試)。由於明文憑證通過網絡發送,PSEXEC不是一種選擇。

這是可在遠程Windows 2008 R2服務器上工作的線路,並且不在遠程Windows 2012 R2服務器上,因爲ConnectedServer屬性引發'System.UnauthorizedAccessException',但僅在訪問2012 R2服務器時才引發。證書是有效的域管理員creds(2008年作品R2 &我可以使用它們登錄到開發服務器)

using (PrincipalContext adDestMachinePrincContext = new PrincipalContext(AccountManagement.ContextType.Machine,"svr2",null,ada.ContextOptions.Negotiate, 
"DomainName\\TheDomainAdminAccount","LegitPassword")) 
{ ... etc etc etc ... } 

我到目前爲止已經發現是這樣的:

  1. 憑據是因爲有效同一條線路在遠程2008 R2服務器上運行。
  2. 遠程2012 R2是我的問題所在,我還沒有 針對2016年進行測試。
  3. 當我使用相同的域管理員憑據登錄到開發服務器 時,它使用當前的 用戶的憑證。這條線每次都有效,當 當前用戶是相同的域管理員時,可以使用下面的命令:CurrentContext x = new ada.PrincipalContext(AccountManagement.ContextType.Machine,「svr2」);

的目標(在這一點上,我不在乎我怎麼把它做)很簡單:添加域用戶帳戶到本地組的遠程服務器上,使用.NET。 PowerShell不是一個選項,但即使是一個工作片段也可以。遠程盒是2008,2008 x86,20058 R2,2012,2012 R2或2016的任何東西。

  • 這不是憑證問題。覆蓋上面。
  • 這不是權限問題。也覆蓋上述內容。
  • 運行可執行文件「以管理員身份運行」不有所作爲

任何人都已經能夠將域帳戶添加到本地組遠程2012 R2服務器上?我還沒有找到任何與工作示例有關的任何東西。如果是這樣,對你有用嗎?

我不確定ADSI調用是否可以正常工作,因爲AD需要LDAP,本地訪問需要WinNT,而且它們似乎沒有能夠完成所需的任務。

我認爲這就是我所擁有的一切...迄今爲止。

我的下一步可能是在域管理員帳戶下運行的WCF服務,但這必須是矯枉過正的。

回答

0

到目前爲止,馬特·約翰遜的崗位並獲得成功,這是工作:

StackOverflow solution by Matt Johnson (he deserves his props!)

  1. 添加模擬類
  2. 更改上面的代碼,以使用新的類來完成這項工程,不管的Windows服務器操作系統:

我原來的帖子中的代碼片段現在看起來像這樣(簡化):

  using (new Impersonation("TheDomain", "TheDomainAdminAccount", "ItsValidPassword")) 
{ 
    using (PrincipalContext adDestMachinePrincContext = new PrincipalContext(AccountManagement.ContextType.Machine,"svr2")) { ... etc etc etc ... } } 

它正在工作。

相關問題