我有一个VMWare View环境,我们通常需要通过大量计算机来扩展池。
对于我们的环境,要将池中的链接克隆计算机添加到域,我们必须在Active Directory中预先创建计算机对象,并临时将“关注用户或组可以加入域”权限设置为某个组。当您一次手动执行一台计算机时 - 您可以使用GUI /向导设置该权限。
我试图通过PowerShell脚本将计算机添加到Active Directory来自动执行此操作。我有脚本工作,它添加了计算机对象,但我没有找到一种明显的方法来设置这些权限,无论是在创建计算机对象时还是在创建后修改权限。
如何使用PowerShell设置这些权限?
答案 0 :(得分:1)
两个链接:
previous time this was asked here
如果您希望同时限制域加入者但允许特定人员加入特定计算机,则必须设置四个权限(请参阅第二个链接)。
另一种选择是为View提供一个服务帐户,该帐户位于GPO受限域Joeans组中。然后,您可以限制域用户帐户加入域,只需拥有正确的服务帐户和支持技术人员。服务帐户将使用Add-Computer自动添加它所创建的每个VM。
答案 1 :(得分:1)
Get-Acl和Set-Acl可以做到这一点,但它并不漂亮。非AD访问ACE非常简单:您授予或拒绝用户/组/计算机/等的权限,并决定ACE是否将应用于对象和/或其任何子项。 AD aces也可以是广泛的,但它们也可以授予或拒绝某些属性,对象,扩展权限和经过验证的权限(实际上有数千种不同的东西)。继承也可以仅锁定到特定类型的对象。您可以使用必须查找的GUID来执行此操作。
在其他答案中删除链接时,您需要授予以下四项内容:
你需要四个独立的ACE才能做到这一点。以下代码段显示了如何执行此操作,但它假定您具有AD cmdlet,并且您希望将ACE应用于每个计算机对象。可以将这些ACE应用于计算机对象将继承的OU,但是您需要更改继承和(可选)InheritedObjectType GUID。无论如何,试试这个:
$IdentityReference = [System.Security.Principal.NTAccount] "UserNameHere"
$ComputerDistinguishedName = Get-ADComputer ComputerNameHere | select -ExpandProperty DistinguishedName
$SD = Get-Acl "AD:\$ComputerDistinguishedName"
# Validated write to DNS host name
$SD.AddAccessRule((New-Object System.DirectoryServices.ActiveDirectoryAccessRule (
$IdentityReference,
"Self", # Validated Write access mask ([System.DirectoryServices.ActiveDirectoryRights])
"Allow", # ACE type ([System.Security.AccessControl.AccessControlType])
"72e39547-7b18-11d1-adef-00c04fd8d5cd", # GUID for 'Validated write to DNS host name'
"None", # ACE will only apply to the object it's assigned to ([System.DirectoryServices.ActiveDirectorySecurityInheritance])
[guid]::Empty # Inherited object type (in this case in can apply to any objects)
)))
# Validated write to service principal name
$SD.AddAccessRule((New-Object System.DirectoryServices.ActiveDirectoryAccessRule (
$IdentityReference,
"Self", # Access mask
"Allow",
"f3a64788-5306-11d1-a9c5-0000f80367c1", # GUID for 'Validated write to service principal name'
"None",
[guid]::Empty
)))
# Write Account Restrictions
$SD.AddAccessRule((New-Object System.DirectoryServices.ActiveDirectoryAccessRule (
$IdentityReference,
"WriteProperty", # Access mask
"Allow",
"4c164200-20c0-11d0-a768-00aa006e0529", # GUID for 'Account Restrictions' PropertySet
"None",
[guid]::Empty
)))
# Reset password
$SD.AddAccessRule((New-Object System.DirectoryServices.ActiveDirectoryAccessRule (
$IdentityReference,
"ExtendedRight", # Access mask
"Allow",
"00299570-246d-11d0-a768-00aa006e0529", # GUID for 'Reset Password' extended right
"None",
[guid]::Empty
)))
$SD | Set-Acl