首页 > 系统相关 >创建批量AD域用户的脚本可以使用 PowerShell 来实现。以下是一个简单的示例脚本,用于批量创建用户:

创建批量AD域用户的脚本可以使用 PowerShell 来实现。以下是一个简单的示例脚本,用于批量创建用户:

时间:2024-06-17 17:32:17浏览次数:28  
标签:脚本 objUser AD 批量 创建 用户 objRecordSet

创建批量AD域用户的脚本可以使用 PowerShell 来实现。以下是一个简单的示例脚本,用于批量创建用户:

powershellCopy Code
# 导入Active Directory模块
Import-Module ActiveDirectory

# 设定要创建用户的数量
$numberOfUsers = 10

# 循环创建用户
for ($i = 1; $i -le $numberOfUsers; $i++) {
    $username = "User$i"  # 用户名格式可以自行修改
    $password = ConvertTo-SecureString -String "P@ssw0rd" -AsPlainText -Force  # 设定初始密码,可以根据需要修改
    $email = "[email protected]"  # 邮箱地址格式可以自行修改
    $displayName = "User $i"
    $ou = "OU=Users,OU=Company,DC=domain,DC=com"  # 设定用户所在的组织单位路径,根据实际情况修改

    # 创建新用户
    New-ADUser `
        -SamAccountName $username `
        -UserPrincipalName "[email protected]" `
        -Name $displayName `
        -DisplayName $displayName `
        -GivenName "User" `
        -Surname "Lastname" `
        -EmailAddress $email `
        -AccountPassword $password `
        -Enabled $true `
        -Path $ou
}

Write-Output "批量创建用户完成。"

请确保在使用此脚本之前,已经安装了Active Directory模块,并且具有足够的权限来创建新用户。此脚本假设用户将被创建在指定的组织单位(OU)中,并且设定了初始密码和邮箱地址。

注意事项:

  • 请根据你的实际情况修改 $ou 变量,确保用户被创建在正确的组织单位中。
  • 脚本中的密码 P@ssw0rd 是示例密码,强烈建议根据安全最佳实践设定更复杂和安全的初始密码。
  • 如果需要设定更多属性(如部门、电话号码等),可以根据需要在 New-ADUser 的参数中添加。

使用此脚本时,建议先在测试环境中进行测试,以确保脚本按预期运行,并避免意外操作。


批量创建AD域用户可以使用VBScript(VBS脚本)来实现。下面是一个简单的示例,演示如何通过VBScript从CSV文件中读取用户信息并创建AD域用户:

  1. 创建CSV文件:首先,创建一个CSV文件,包含要创建的用户信息。例如,创建一个 users.csv 文件,内容如下:

    Copy Code
    Username,Password,FirstName,LastName,DisplayName,Description
    User1,P@ssw0rd,John,Doe,John Doe,Test user 1
    User2,P@ssw0rd,Jane,Smith,Jane Smith,Test user 2
    User3,P@ssw0rd,Michael,Johnson,Michael Johnson,Test user 3

    这个文件包含了用户名、密码、名字、姓氏、显示名称和描述等信息。

  2. 编写VBScript脚本:创建一个VBScript脚本(例如 CreateADUsers.vbs),用于读取CSV文件并创建AD域用户。示例脚本如下:

    vbscriptCopy Code
    Const ADS_UF_NORMAL_ACCOUNT = &H200
    Const ADS_UF_PASSWD_NOTREQD = &H20
    Const ADS_UF_PASSWORD_EXPIRED = &H800000
    
    ' 设置AD路径和域信息
    strDomain = "yourdomain.com"  ' 修改为你的域名
    strOU = "OU=Users,DC=yourdomain,DC=com"  ' 修改为你的OU路径
    
    ' 读取CSV文件路径
    strCSVFile = "C:\path\to\users.csv"  ' 根据实际情况修改文件路径
    
    ' 创建ADODB连接对象和记录集对象
    Set objConnection = CreateObject("ADODB.Connection")
    Set objRecordSet = CreateObject("ADODB.Recordset")
    
    objConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strCSVFile & ";Extended Properties=""text;HDR=YES;FMT=Delimited"""
    
    ' 执行SQL查询获取CSV文件中的用户信息
    strSQL = "SELECT * FROM [" & Replace(strCSVFile, "\", "\\") & "]"
    objRecordSet.Open strSQL, objConnection
    
    ' 遍历记录集,创建AD用户
    Do Until objRecordSet.EOF
        strUsername = objRecordSet.Fields("Username").Value
        strPassword = objRecordSet.Fields("Password").Value
        strFirstName = objRecordSet.Fields("FirstName").Value
        strLastName = objRecordSet.Fields("LastName").Value
        strDisplayName = objRecordSet.Fields("DisplayName").Value
        strDescription = objRecordSet.Fields("Description").Value
    
        ' 组合用户PrincipalName
        strUserPrincipalName = strUsername & "@" & strDomain
    
        ' 创建用户对象
        Set objOU = GetObject("LDAP://" & strOU)
        Set objUser = objOU.Create("user", "cn=" & strDisplayName)
        
        ' 设置用户属性
        objUser.Put "sAMAccountName", strUsername
        objUser.Put "userPrincipalName", strUserPrincipalName
        objUser.Put "givenName", strFirstName
        objUser.Put "sn", strLastName
        objUser.Put "displayName", strDisplayName
        objUser.Put "description", strDescription
        objUser.Put "userAccountControl", ADS_UF_NORMAL_ACCOUNT Or ADS_UF_PASSWD_NOTREQD
    
        ' 设置用户密码
        objUser.SetPassword strPassword
        objUser.SetInfo
    
        ' 输出创建成功信息
        WScript.Echo "Created user: " & strDisplayName
    
        ' 移动用户到正确的OU
        objUser.MoveHere "LDAP://" & objOU.ADsPath, strUserPrincipalName
    
        ' 继续处理下一条记录
        objRecordSet.MoveNext
    Loop
    
    ' 关闭记录集和连接
    objRecordSet.Close
    objConnection.Close
  3. 运行脚本:双击运行 CreateADUsers.vbs 脚本即可执行批量创建AD域用户的操作。

注意事项

  • 在脚本中,修改 strDomain 和 strOU 变量为你的域和正确的组织单位路径。
  • 确保CSV文件的路径和字段名与脚本中的一致。
  • 确保脚本运行的账户具有足够的权限来创建AD域用户。

通过这个VBScript脚本,你可以批量从CSV文件中创建AD域用户,这在一次性创建多个用户时非常有用。


 

标签:脚本,objUser,AD,批量,创建,用户,objRecordSet
From: https://www.cnblogs.com/suv789/p/18252885

相关文章

  • AOP代理的创建【底层源码】
    代理的创建(源码)创建代理的方法是postProcessAfterInitialization:如果Bean被子类标识为代理,则使用配置的拦截器创建一个代理源码参考:AOP切面底层原理【底层源码】-postProcessAfterInitialization源码部分wrapIfNecessary方法主要用于判断是否需要创建代理,如果bean能......
  • shell脚本
    Shell脚本一、脚本脚本:脚本就是可运行的代码的集合,脚本语言(计算机语言)脚本的特点:从上到下,按行执行。python脚本语言格式更严谨严格的执行缩进。也是从上到下按行执行shell脚本就是在shell环境(/bin/bash)bash就shell的解释器。linux环境下的编程语句。自动化运维。可......
  • shell脚本循环
    Shell脚本循环循环:循环是一种重复执行一段代码的结构。只要满足循环的条件,会一直执行这个代码。组成部分:循环条件、循环体循环条件:在一定范围之内,按照指定的次数来执行循环。循环体:在指定的次数内,执行的命令序列。只要条件满足,循环体会被一直执行。循环和遍历:遍历:就是......
  • 使用Jupyter(python+opencv)实现特别难的脚本-Day2
    Day2那昨天实现了这个自动挖土,我发现这个yb也是很扯0的东西,所以今天简单优化优化,完了再简单优化一下双手,写个yb吧。首先依旧是库一小堆儿fromPILimportImageimportpyautoguiimportrandomimportpygetwindowasgwimporttime然后那既然是优化那肯定是面向对象......
  • 使用Jupyter(python+opencv)实现很难的脚本-Day1
    由于xx西游没办法自动挖图,于是懒狗的我只能自己写一段脚本来实现挖土自由。首先介绍几个比较重要的库都需要自行install。fromPILimportImage#用于计算图片大小的库importpyautogui#用于抓取目标位置的库importpygetwindowasgw#用于得到窗口大小的库......
  • Unity 脚本修改方块透明度使其有一个渐变效果
    usingUnityEngine;usingSystem.Collections;publicclassTestClass:MonoBehaviour{privatefloatAlphaValue=1.0f;privatefloattime=0.0f;privateboolstate=false;Materialmaterial;privatevoidStart(){mater......
  • 为什么定制人工智能让我对未来充满乐观,从创建自己的人工智能中学到了什么
    您是否曾经想过克隆自己?我不是指身体上的克隆,而是指技术上的克隆。提取您一生积累的专业知识和知识并将其“开源”。好吧,我就是这么做的!在此过程中我学到了很多东西。以下是我这样做的方法。推荐文章《如何微调NLLB-200模型以翻译新语言(教程含源码)》权重3《LLM......
  • 域名证书自动续期脚本acme同一证书更新后安装到多个程序目录的方法
    需求:同一个证书,有两个程序在使用,比如,nginx和apache,使用acme进行自动续期,前面都正常,但是使用acme.sh--install-cert的时候,只会记住最后一次设定的目录,比如先执行了nginx的,后执行了apache,则续费后,只更新apache的证书目录,想要实现两个都更新.解决方法:1.笨方法:将两......
  • mysql dump 拉取远程数据同步到本地库的shell 脚本
    #!/bin/bash#远程MySQL连接信息REMOTE_HOST="8.8.11.100"REMOTE_USERNAME="root"REMOTE_PASSWORD="Yaya@1972"#本地MySQL连接信息LOCAL_HOST="8.8.9.248"#或者"localhost"LOCAL_USERNAME="root"LOCAL_PASSWORD......
  • 创建Docker容器与外部机通信(端口映射的方式)
    一、检查端口是否被占用1.1 查看正在使用中的TCP和UDP端口:ss-tulnLISTEN:表示端口正在监听连接,意味着这些端口已经被系统服务使用。比如,如果你看到"tcp000.0.0.0:80800.0.0.0:*LISTEN",这意味着8080端口被一个服务监听,并等待连接。 判断端口是否被占用:如果你想......