当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用txt文件中的内容填充AD组(用户可以在没有AD控制台的情况下管理AD组)

作者:精品下载站 日期:2024-12-14 07:13:00 浏览:15 分类:玩电脑

使用txt文件中的内容填充AD组(用户可以在没有AD控制台的情况下管理AD组)


前段时间,一位客户要求我创建一个小型 powershell 脚本,该脚本可以从文本文件中读取用户,并通过计划任务每天一次将其添加到特殊的 Active Directory 组中。目标是让一些“管理员”用户通过文本文件更改 AD 组,方法是将 SamAccountName 添加到这些文本文件中,脚本还应该进行清理,以便这些 AD 组中不会存储旧内容。我们还必须为这些用户授予特殊权限,以便他们只能查看自己的文本文件而不能操作其他文件(具有 ntfs 权限)。这些用户对 ActiveDirectory 没有任何特殊访问权限。我认为这是管理广告组并授权这样做的一种非常安全的方式。

脚本链接:https://github.com/blog-it-koehler-com/manageadgroupwithtxt

在我们完成这项工作之前,您应该在执行脚本的服务器上做一些准备工作。
1.需要 AD Powershell 模块
2。有权执行批处理的用户
3。有权访问广告以将用户添加到群组的用户
4。在特殊用户拥有自己的部分的任何服务器上共享
5。日志记录路径
6。脚本本身

在使用完整的 powershell 脚本之前,这里先对该脚本的核心内容进行一些解释。

$files = Get-ChildItem \dc01\adgroup\*.txt -Recurse
$adgroupprefix = "g-demo-"
## get content of every file and its name 
foreach($file in $files){
$name = ($file).Name.ToString()
$noextension = ($name.Substring(0,$name.Length-4))
$path = ($file).FullName
$adgroup = $adgroupprefix+$noextension
$samaccounts = Get-Content "$path"
Write-Host "### $adgroup ###"
### get all user from ad group and remove them
$tempmembers = Get-ADGroupmember -Identity $adgroup 
foreach($tempmember in $tempmembers){
    $name = ($tempmember).name
    Write-Host "Removing user: $name" -ForegroundColor Green
    Remove-ADGroupMember -Identity $adgroup -Members $tempmember -Confirm:$false
}
### adding all users from txt files 
foreach ($newmember in $samaccounts){
    
    Write-host "Adding $newmember to $adgroup" -ForegroundColor Green
    Add-ADGroupMember -Identity $adgroup -Members $newmember
    }
   }
 

那么它是怎样工作的。让我们看看这个脚本的一些环境设置。

[玩转系统] 使用txt文件中的内容填充AD组(用户可以在没有AD控制台的情况下管理AD组)

您必须为能够通过文本文件编辑广告组的用户创建具有特殊权限的共享。
在我的例子中,这些组被分隔在文件夹中,因此每个部门只能编辑其特殊的文本文件。

在 Active Directory 中也必须有相应的组。
注意:使用 TXT 文件的名称,您可以控制要添加的组。我的脚本假设所有组都有一个组前缀,并将 txt 文件名(例如“group1”)替换为“g-demo-group1”。 AD 中的组也应符合此方案。因此您可以找到变量“adgroupprefix”。

[玩转系统] 使用txt文件中的内容填充AD组(用户可以在没有AD控制台的情况下管理AD组)

在文本文件中可以添加用户的 SamAccountNames。 (您还可以使用其他属性,但 SamAccountName 是完成此任务的简单方法。还可以使用以下属性:

https://docs.microsoft.com/en-us/powershell/module/addsadministration/add-adgroupmember?view=win10-ps&viewFallbackFrom=winserver2012-ps

[玩转系统] 使用txt文件中的内容填充AD组(用户可以在没有AD控制台的情况下管理AD组)

如果您想通过计划任务执行此操作,则必须创建 on,它会执行 powershell 脚本。开始任务后,组中应填充文本文件中指定的用户。该脚本的完整版本还会创建一个小日志文件,以便您可以查看它是否已执行以及它对广告组做了什么。

[玩转系统] 使用txt文件中的内容填充AD组(用户可以在没有AD控制台的情况下管理AD组)

该脚本还会检查用户在 Active Directory 中是否可用以及该组是否也存在。如果用户不可用,您可以在日志文件中看到这一点。它还检查您是否已安装 AD PowerShell 模块。

我们如何创建执行此脚本的计划任务?首先考虑您想要执行此脚本的用户上下文!
在我的演示中,我创建了一个新用户并将其添加到域管理员(我知道这很简单、快速且肮脏)。如果您不想这样做,则必须在 Active Directory 中向该用户以及执行脚本的服务器委派权限。在创建任务的服务器上执行“secpol.msc”。

[玩转系统] 使用txt文件中的内容填充AD组(用户可以在没有AD控制台的情况下管理AD组)

在我的例子中,为这个特殊用户分配正确的“作为批处理作业登录”,它是“adgroupimporter”

[玩转系统] 使用txt文件中的内容填充AD组(用户可以在没有AD控制台的情况下管理AD组)

现在您应该使用用户“adgroupimporter”创建新任务。

[玩转系统] 使用txt文件中的内容填充AD组(用户可以在没有AD控制台的情况下管理AD组)

就我而言,任务每天下午 5 点开始。

[玩转系统] 使用txt文件中的内容填充AD组(用户可以在没有AD控制台的情况下管理AD组)

重要的一步是调用powershell脚本。这并不是你凭直觉猜到的那样。
启动程序:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
参数:-ExecutionPolicy Bypass -File “C:\temp\adgroup.exe” ps1”

[玩转系统] 使用txt文件中的内容填充AD组(用户可以在没有AD控制台的情况下管理AD组)

完成此步骤后,您需要输入服务用户的密码,然后开始。计划任务已准备好填充您的 AD 组。

如果您喜欢这篇文章,请点击“有用”。如果您有疑问或功能请求,请在评论部分告诉我。
享受 txt 文件的乐趣。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯