powershell - 如何将知名域组添加到本地组?
问题描述
我正在寻找一个干净简单的解决方案(One-Liner?)将众所周知的域组添加Domain Users
到本地组,如“直接访问用户”。
- 命令/脚本将在 Win10 客户端上执行。
- 不应为此使用像“RSAT-AD-PowerShell”这样的附加模块。
- 无论操作系统语言如何,代码都应该可以工作。
我使用以下代码将“Authenticated Users”(= Well-known-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 动态。
谢谢
解决方案
我看不出有什么捷径可以做到这一点——比如,可以“自然地”放在一行中的东西(当然,如果你真的想的话,你总是可以把它放在一起)。困难的部分似乎是获取域 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
推荐阅读
- android - Ionic - 无法通过注册表获取插件
- c# - 如何在c#中通过正则表达式模式将纯文本(带下划线)转换为超链接
- autodesk-forge - 如何使用 Autodesk A360 API 获取文档路径?
- firebase - QuerySnapshot 中的 fireStore 问题始终为空
- spring-data-jpa - 如何在 spring queryDSL 中为 List 构建谓词?
- c++ - 如何在等价列表中找到最小的连接标签
- for-loop - Oracle PL/SQL for 循环:根据条件选择查询
- ocaml - OCaml 中有没有办法在记录中声明一个整数,它是一些整数的间隔?
- laravel-7 - 我无法在 laravel 7 中重置密码
- pyspark - pyspark中for循环内的过滤器真的很慢