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

[玩转系统] 测试环境:使用 PowerShell 自动化构建包含组和用户的 Active Directory OU 结构

作者:精品下载站 日期:2024-12-14 07:34:44 浏览:11 分类:玩电脑

测试环境:使用 PowerShell 自动化构建包含组和用户的 Active Directory OU 结构


您刚刚开始学习新东西,现在即将使用 Windows Server 构建测试环境?为了一个良好的测试环境,您需要一个域控制器和一些 OU、组和用户来使用。在这篇博文中,我将提供一个可供下载的脚本,使您能够在短短几秒钟内创建这些对象,以便您可以立即开始。

剧本

在域控制器上运行以下代码,最好在 ISE 或 Visual Studio Code 中运行。

第 14-16 行中定义您选择的 OU、组和用户。剧本是中立的。您不需要输入域名,只需根据需要重命名对象。

[玩转系统] 测试环境:使用 PowerShell 自动化构建包含组和用户的 Active Directory OU 结构

<# 
Author: Patrick Gruenauer | Microsoft PowerShell MVP [2018-2024]
Web: a-d.site
This script is intended for use in a Test environment. It creates OUs, 
Groups and Users. 
#>

# If necessary, bypass the execution policy.
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force -Confirm:$false

# Define OUs, Groups and Users and Attributes here
$OUs            =   'HR','Technicians','CEOs','Groups'
$Groups         =   'HR','Technicians','CEOs'
$HR             =   'Hans Womanizer','Markus Haul','Birgit Immerfroh','Franz Bizeps'
$Technician     =   'Bernd Bullseye','Michael Hightower','Markus PowerShell'
$CEO            =   'Peter Travesty','Tatjana Schlank'
$City           =   'Vienna','Berlin','New York'

# User Password 
$userpw = Read-Host "Enter a password for the users"

# Creating litte helpers ...
$root = $env:USERDNSDOMAIN.Split('.')[1]
$sub = $env:USERDNSDOMAIN.Split('.')[0]

# Create OUs
Foreach ($o in $OUs) {
    New-ADOrganizationalUnit -Name $o -Verbose
}

# Create Groups
Foreach ($g in $Groups) {
    New-ADGroup -Name $g `
    -Path "OU=Groups,DC=$sub,DC=$root" `
    -GroupScope Universal -GroupCategory Security -Verbose
}

# Create users and store them in the corresponding OU. 
# Add users to groups corresponding to the OU.
foreach ($h in $HR) {
    $split =    $h.split(' ')
    $sam =      ($split[0].Substring(0,1) + '.' + $split[1]).ToLower()
    $upn =      ($split[0].Substring(0,1) + '.' + $split[1] + '@' + 
                $env:USERDNSDOMAIN).ToLower()
    New-ADUser `
    -Name $h `
    -GivenName $split[0] `
    -Surname $split[1] `
    -DisplayName $h `
    -Enabled $true `
    -AccountPassword (ConvertTo-SecureString -AsPlainText $userpw -Force) `
    -SamAccountName $sam `
    -UserPrincipalName $upn `
    -Path "OU=HR,DC=$sub,DC=$root" `
    -EmailAddress $upn `
    -Department 'HR' `
    -City (Get-Random -InputObject $City[0..3]) `
    -Verbose
}

foreach ($t in $Technician) {
    $split =    $t.split(' ')
    $sam =      ($split[0].Substring(0,1) + '.' + $split[1]).ToLower()
    $upn =      ($split[0].Substring(0,1) + '.' + $split[1] + '@' + 
                $env:USERDNSDOMAIN).ToLower()
    New-ADUser `
    -Name $t `
    -GivenName $split[0] `
    -Surname $split[1] `
    -DisplayName $t `
    -Enabled $true `
    -AccountPassword (ConvertTo-SecureString -AsPlainText $userpw -Force) `
    -SamAccountName $sam `
    -UserPrincipalName $upn `
    -Path "OU=Technicians,DC=$sub,DC=$root" `
    -EmailAddress $upn `
    -Department 'Technicians' `
    -City (Get-Random -InputObject $City[0..3]) `
    -Verbose
}

foreach ($c in $CEO) {
    $split =    $c.split(' ')
    $sam =      ($split[0].Substring(0,1) + '.' + $split[1]).ToLower()
    $upn =      ($split[0].Substring(0,1) + '.' + $split[1] + '@' + 
                $env:USERDNSDOMAIN).ToLower()
    New-ADUser `
    -Name $c `
    -GivenName $split[0] `
    -Surname $split[1] `
    -DisplayName $c `
    -Enabled $true `
    -AccountPassword (ConvertTo-SecureString -AsPlainText $userpw -Force) `
    -SamAccountName $sam `
    -UserPrincipalName $upn `
    -Path "OU=CEOs,DC=$sub,DC=$root" `
    -EmailAddress $upn `
    -Department 'CEOs' `
    -City (Get-Random -InputObject $City[0..3]) `
    -Verbose
}

# Add OU Users to Group
$CEOg = "OU=CEOs,DC=$sub,DC=$root"
$hrg = "OU=HR,DC=$sub,DC=$root"
$techg = "OU=Technicians,DC=$sub,DC=$root"
$HRg = "OU=HR,DC=$sub,DC=$root"

Get-ADUser -Filter * -SearchBase $CEOg | 
ForEach-Object {Add-ADGroupMember -Identity CEOs -Members $_ -Verbose}

Get-ADUser -Filter * -SearchBase $hrg | 
ForEach-Object {Add-ADGroupMember -Identity HR -Members $_ -Verbose}

Get-ADUser -Filter * -SearchBase $techg | 
ForEach-Object {Add-ADGroupMember -Identity Technicians -Members $_ -Verbose}

Get-ADUser -Filter * -SearchBase $HRg | 
ForEach-Object {Add-ADGroupMember -Identity HR -Members $_ -Verbose}

Start-Process dsa.msc

感谢您阅读本文并享受新的 Active Directory 测试环境。

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

取消回复欢迎 发表评论:

关灯