如何将知名的域组添加到本地组?

时间:2019-11-07 10:41:58

标签: powershell

我正在寻找一种干净简单的解决方案(One-Liner?),以将众所周知的域组Domain Users添加到本地组(例如“直接访问用户”)。

  • 命令/脚本将在Win10客户端上执行。
  • 请勿使用诸如“ RSAT-AD-PowerShell”之类的其他模块。
  • 该代码应与操作系统语言无关。

我使用以下代码将“经过身份验证的用户”(=知名SID S-1-5-11)添加到本地组:

Add-LocalGroupMember -Group "Direct Access Users" -Member S-1-5-11 -Verbose

这很好用,因为SID是静态的,但是“域用户”的SID看起来像这样S-1-5-21Domain-513,我也想使域SID动态。

谢谢

2 个答案:

答案 0 :(得分:1)

我看不到任何 short 方式-例如,某些东西可以“自然地”排列在一行中(如果您确实愿意,可以总是将其涂抹在一起,当然)。困难的部分似乎是获取域SID。有了它,构造域用户组的知名SID就足够简单了。下面使用计算机帐户执行此操作;如果允许您假定域用户正在运行此代码,则可以缩写代码。

$qualifiedComputerName = [DirectoryServices.ActiveDirectory.Domain]::GetComputerDomain().Name + "\" + [Environment]::MachineName + "$"
$computerAccount = [Security.Principal.NTAccount]::new($qualifiedComputerName)
$domainSid = $computerAccount.Translate([Security.Principal.SecurityIdentifier]).AccountDomainSid
$domainUsersSid = [Security.Principal.SecurityIdentifier]::new("AccountDomainUsersSid", $domainSid).Value

Add-LocalGroupMember -Group "Direct Access Users" -Member $domainUsersSid -Verbose

答案 1 :(得分:1)

从dNC根中获取域SID:

$RootDSE = [adsi]"LDAP://RootDSE"
$dNC = [adsi]"LDAP://$($RootDSE.defaultNamingContext)"
$domainSID = [System.Security.Principal.SecurityIdentifier]::new($dNC.Properties['objectSID'].Value, 0)
$domainUsers = [System.Security.Principal.SecurityIdentifier]::new('AccountDomainUsersSid', $domainSID)

Add-LocalGroupMember -Group "Direct Access Users" -Member $domainUsers.Value