-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathADrbac.psm1
More file actions
110 lines (95 loc) · 5.89 KB
/
ADrbac.psm1
File metadata and controls
110 lines (95 loc) · 5.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
function New-ADrbacOrganisation () {
#Requires -Modules ActiveDirectory
#Requires -RunAsAdministrator
<#
.SYNOPSIS
Crée une structure basique d'OU et de groupes pour une nouvelle organisation AD.
.NOTES
Author : Patrick MADROLLE
Prerequisite : PowerShell V3 over 2012r2 and upper.
Copyright : GPLv3
.LINK
https://github.com/DirectDemo/ADrbac
.EXAMPLE
.\creaOrg.ps1
Crée la premiére organisation, et chaque lancement supplémentaire en crée une de plus.
#>
""
Set-strictmode -Version 2
#--------------------------------------Paramétres
$root = 'Global' #OU racine UNIQUE
$adds = 'ADDS' #OU dédiée à l'AD
$ProtectedFromAccidentalDeletion = $false
$accesGroupPatern = "Access-{0}-administration"
$roleGroupPatern = "Role-{0}-administrateur"
$compteAdministrateur = 'u00p'
$compteOrdinaire = 'u00o'
#--------------------------------------Début de script
$dom = Get-ADDomain
$rootObject = Get-ADOrganizationalUnit -Filter {name -eq $root} -SearchBase $dom.DistinguishedName -SearchScope OneLevel
if ( $rootObject -eq $null ) {
#--------------------------------------Création de l'arborscence de base et de la premiére organisation
$OrgOU = New-ADOrganizationalUnit -Name $root -Path $dom.DistinguishedName -Description "OU racine" -ProtectedFromAccidentalDeletion $ProtectedFromAccidentalDeletion -PassThru
$RedirCmp = New-ADOrganizationalUnit -Name 'RedirCmp' -Path $OrgOU.DistinguishedName -Description "OU par défaut des ordinateurs" -PassThru
$RedirUsr = New-ADOrganizationalUnit -Name 'RedirUsr' -Path $OrgOU.DistinguishedName -Description "OU par défaut des utilisateurs" -PassThru
$Org = New-ADOrganizationalUnit -Name 'Org00' -path $OrgOU.DistinguishedName -Description "Raison sociale de la société ou del'association" -PassThru
""
"Une ouvelle arborescence avec "+$Org.Name+" a été créée !"
""
"Vous pouvez à présent positionner les OU de création par defaut."
"RedirCmp '$($RedirCmp.DistinguishedName)'"
"Redirusr '$($RedirUsr.DistinguishedName)'"
""
} else {
#--------------------------------------Création d'une organisation supplémentaire
[array]$Orgs = Get-ADOrganizationalUnit -Filter {name -like "Org*"} -SearchBase $rootObject.DistinguishedName -SearchScope OneLevel
$OrgNumber = 0
foreach ( $Org in $Orgs ) {
$OrgNumber = [math]::Max($OrgNumber,[int]($Org.name).Substring(3))
}
if ( $OrgNumber -le 99 ) {
$Org = New-ADOrganizationalUnit -Name ("Org{0,2}" -f ($OrgNumber+1) -replace ' ','0') -Path $rootObject.DistinguishedName -Description "Nom de société ou d'association" -PassThru
} else {
"Numéro maximum d'organisation : 99"
exit
}
"La nouvelle organisation "+$Org.Name+" est ajoutée !"
}
#--------------------------------------création des OU de l'organisation
$OUsers = New-ADOrganizationalUnit -Name 'Users' -Path $Org.DistinguishedName -Description "Comptes utilisateurs" -PassThru
New-ADOrganizationalUnit -Name '_Disabled' -Path $OUsers.DistinguishedName -Description "Comptes utilisateurs désactivés"
$OUworkstations = New-ADOrganizationalUnit -Name 'Workstations' -Path $Org.DistinguishedName -Description "Comptes des postes" -PassThru
New-ADOrganizationalUnit -Name '_Disabled' -Path $OUworkstations.DistinguishedName -Description "Comptes des postes désactivés"
$OUapplications = New-ADOrganizationalUnit -Name 'Applications' -Path $Org.DistinguishedName -Description "OUs regroupant les objets des applications" -PassThru
New-ADOrganizationalUnit -Name '_Disabled' -Path $OUapplications.DistinguishedName -Description "OUs regroupant les objets des applications désactivées"
New-ADOrganizationalUnit -Name '_Others' -Path $OUapplications.DistinguishedName -Description "Autres applications"
New-ADOrganizationalUnit -Name 'App00' -Path $OUapplications.DistinguishedName -Description "Nom de l'application"
$OUappADDS = New-ADOrganizationalUnit -Name $adds -Path $OUapplications.DistinguishedName -Description "Objets pour l'AD et GPO" -PassThru
"Les sous OU de l'organisation sont créées."
#création des groupes d'accés de l'organisation
New-ADGroup -Name ($accesGroupPatern -f $Org.name) -Path $OUappADDS.DistinguishedName -Description ("Administration de l'OU "+$Org.name) -GroupScope DomainLocal
New-ADGroup -Name ($accesGroupPatern -f $Org.name+"-$adds") -Path $OUappADDS.DistinguishedName -Description ("Administration de l'OU $adds") -GroupScope DomainLocal
New-ADGroup -Name ($accesGroupPatern -f $Org.name+'-App00') -Path $OUappADDS.DistinguishedName -Description ("Administration de l'OU App00") -GroupScope DomainLocal
"Les premiers groupes d'accés sont créés."
#création des groupes de rôles de l'organisation
if ( $rootObject -eq $null )
{
$adminRole = New-ADGroup -Name ($roleGroupPatern -f $dom.DNSRoot) -Path $OUsers.DistinguishedName -Description ("Administration de "+$dom.DNSRoot) -GroupScope Global -PassThru
Get-ADgroup -filter * | Where-object {
$_.sid -eq "$($dom.DomainSID)-512" -or $_.sid -eq "$($dom.DomainSID)-519"
} | Foreach-Object {
Add-ADGroupMember -Identity $_ -Members $adminRole
}
"Les premiers groupes de rôles sont créés."
$domAdmUser = New-ADUser -Name $compteAdministrateur -Path $OUsers.DistinguishedName -Description ("Compte d'administration") -PassThru
Add-ADGroupMember -Identity $adminRole -Members $domAdmUser
"Votre compte privilégié administrateur du domaine $compteAdministrateur est créé."
New-ADUser -Name $compteOrdinaire -Path $OUsers.DistinguishedName -Description ("Compte commun")
"Votre compte ordinaire $compteOrdinaire est créé."
}
""
read-host -prompt "Appuyez sur une touche pour Quitter"
}
function Remove-ADrbacOrganisation () { #stupid cmdlet
remove-ADOrganizationalUnit -Identity ('OU=Global,'+(Get-ADDomain).DistinguishedName) -Recursive -Confirm:$false
}