我试图分配权限AD OU的使用powershell脚本,应该创建一个新的对象类型System.Security.Principal.NTAccount
和System.DirectoryServices.ActiveDirectoryAccessRule
,我现在的代码是工作没有备用凭据,但现在我需要使用相同的代码与备用凭据。
没有备用凭据的工作代码:
$ADSI = [ADSI]"LDAP://$OUPath"
$NTAccount = New-Object System.Security.Principal.NTAccount($ClientGroupED)
$IdentityReference = $NTAccount.Translate([System.Security.Principal.SecurityIdentifier])
$ActiveDirectoryRights = [System.DirectoryServices.ActiveDirectoryRights] "GenericAll"
$AccessControlType = [System.Security.AccessControl.AccessControlType] "Deny"
$Inherit = [System.DirectoryServices.ActiveDirectorySecurityInheritance] "All" #All, Children, Descendents, None, SelfAndChildren
$ACE = New-Object System.DirectoryServices.ActiveDirectoryAccessRule($IdentityReference,$ActiveDirectoryRights,$AccessControlType,$Inherit)
$ADSI.psbase.ObjectSecurity.SetAccessRule($ACE)
$ADSI.psbase.commitchanges()
我尝试使用-Credential $Cred
传递备用凭据,并且在调用New-Object时也传递了-ArgumentList $Cred
。在这个问题上需要一些帮助。
2条答案
按热度按时间qpgpyjmq1#
您实际与AD对话的唯一地方是在
$ADSI.psbase.commitchanges()
。因此,您需要设置凭据的唯一地方是在创建$ADSI
时。[ADSI]
类型加速器只是创建DirectoryEntry
对象的快捷方式。DirectoryEntry
确实有一个接受凭据的构造函数,但要使用它,您不能再使用类型加速器。您需要使用New-Object
,如下所示:只需将
username
和password
替换为有权执行您正在执行的操作的凭据。如果希望脚本调用
Get-Credential
并使用用户输入的任何凭据,则可以使用解决方案here。旁注:你不需要在最后两行使用
psbase
。如果你愿意,你可以使用,但它没有功能上的区别。你可以不使用:dgiusagp2#
您也可以直接在
ADSI
对象上设置凭据,我已经测试过如何为用户设置终端服务属性。