Active-Directory

在 Powershell 中添加或修改 AD 組時訪問被拒絕

  • July 21, 2011

我需要在 AD 中創建大量域本地安全組,因此想使用 PoSH 編寫腳本而不是手動創建每個安全組。

如果我嘗試在 PoSH 中創建組,我會收到拒絕訪問錯誤,但可以在 ADUC 中毫無問題地創建它們。嘗試添加成員時也會發生同樣的事情。

可能是什麼問題?我檢查了事件日誌,但我得到的只是 DS 事件 (4662) 拒絕訪問,沒有其他資訊。

我已經在多個 DC 上嘗試過,使用 Powershell Modules for Active Directory 快捷方式,以及使用 Import-Module Active-Directory 的正常 Powershell 會話。

**編輯:**下面是一個範例錯誤:

Log Name:      Security
Source:        Microsoft-Windows-Security-Auditing
Date:          28/06/2011 11:57:54 AM
Event ID:      4662
Task Category: Directory Service Access
Level:         Information
Keywords:      Audit Failure
User:          N/A
Computer:      MYDC.mydomain.com
Description:
An operation was performed on an object.

Subject :
   Security ID:        mydomain\user
   Account Name:       user
   Account Domain:     mydomain
   Logon ID:       0x8d81c809

Object:
   Object Server:      DS
   Object Type:        group
   Object Name:        CN=SERVERNAME-RDP-Users,OU=SQL Servers,OU=RDP,OU=Server Login Permissions,DC=mydomain,DC=com
   Handle ID:      0x0

Operation:
   Operation Type:     Object Access
   Accesses:       Write Property

   Access Mask:        0x20
   Properties:     ---
       {bc0ac240-79a9-11d0-9020-00c04fc2d4cf}
           {bf9679c0-0de6-11d0-a285-00aa003049e2}
   {bf967a9c-0de6-11d0-a285-00aa003049e2}


Additional Information:
   Parameter 1:        -
   Parameter 2:        
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
 <System>
   <Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-A5BA-3E3B0328C30D}" />
   <EventID>4662</EventID>
   <Version>0</Version>
   <Level>0</Level>
   <Task>14080</Task>
   <Opcode>0</Opcode>
   <Keywords>0x8010000000000000</Keywords>
   <TimeCreated SystemTime="2011-06-28T01:57:54.401588800Z" />
   <EventRecordID>261383903</EventRecordID>
   <Correlation />
   <Execution ProcessID="520" ThreadID="684" />
   <Channel>Security</Channel>
   <Computer>DC1.mydomain.com</Computer>
   <Security />
 </System>
 <EventData>
   <Data Name="SubjectUserSid">S-1-5-21-1580943700-3625058406-2646640161-1105</Data>
   <Data Name="SubjectUserName">User</Data>
   <Data Name="SubjectDomainName">mydomain</Data>
   <Data Name="SubjectLogonId">0x8d81c809</Data>
   <Data Name="ObjectServer">DS</Data>
   <Data Name="ObjectType">%{bf967a9c-0de6-11d0-a285-00aa003049e2}</Data>
   <Data Name="ObjectName">%{29c4e057-b8d3-4fa2-9f91-8dd6336897b4}</Data>
   <Data Name="OperationType">Object Access</Data>
   <Data Name="HandleId">0x0</Data>
   <Data Name="AccessList">%%7685
               </Data>
   <Data Name="AccessMask">0x20</Data>
   <Data Name="Properties">---
       {bc0ac240-79a9-11d0-9020-00c04fc2d4cf}
           {bf9679c0-0de6-11d0-a285-00aa003049e2}
   {bf967a9c-0de6-11d0-a285-00aa003049e2}
</Data>
   <Data Name="AdditionalInfo">-</Data>
   <Data Name="AdditionalInfo2">
   </Data>
 </EventData>
</Event>

好的,找到了答案。Win2K8 中有一個安全功能可以防止您在 DC 上本地執行這些 cmdlet。因此,基本上您需要使用 PSRemoting 從工作站執行它們,或者只使用-Server交換機指定另一個 DC。

引用自:https://serverfault.com/questions/284719