-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEmployeeOnboarding.ps1
93 lines (81 loc) · 3.79 KB
/
EmployeeOnboarding.ps1
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
# Define when accounts expire
$TSpan = New-TimeSpan -Days 365
# Declare OUs
$OrgList = @('_Admins', 'Help Desk', 'Development', 'Executive Office')
$Org = Read-Host "Please enter Department (_Admins, Help Desk, Development, Executive Office)"
# Validate Department Input
if ($Org -in $OrgList) {
Clear-Host
}
# Entry does not exist
else {
Write-Host "Department not found"
Start-Sleep -Seconds 10
}
# Input User Info
$FirstName = Read-Host "Please enter first name"
$LastName = Read-Host "Please enter last name"
$UserName = ($FirstName + "." + $LastName)
$DisplayName = ($FirstName + " " + $LastName)
$UPN = ($UserName + '@mydomain.com')
$CurrentDate = Get-Date -Format "yyyy/MM/dd"
$AccExpiration = (Get-Date) + $TSpan
# Copy info via template
if ($Org.ToLower() -eq '_admins') {
$User = Get-ADUser -Identity _AdminTemplate -Properties Description, Office
# Get user group
$UserGroups = Get-ADPrincipalGroupMembership -Identity _AdminTemplate
# Create user
New-ADUser -Instance $User -SamAccountName $UserName -UserPrincipalName $UPN -Surname $LastName -GivenName $FirstName -Name $DisplayName -Description ("Created: " +$CurrentDate) -AccountExpirationDate $AccExpiration
# Assign users to groups
$UserGroups | ForEach-Object { Add-ADPrincipalGroupMembership -Identity $UserName -MemberOf $_ -ErrorAction SilentlyContinue}
}
elseif ($Org.ToLower() -eq 'Help Desk') {
$User = Get-ADUser -Identity _AdminTemplate -Properties Description, Office
# Get user group
$UserGroups = Get-ADPrincipalGroupMembership -Identity _HelpDeskTemplate
# Create user
New-ADUser -Instance $User -SamAccountName $UserName -UserPrincipalName $UPN -Surname $LastName -GivenName $FirstName -Name $DisplayName -Description ("Created: " +$CurrentDate) -AccountExpirationDate $AccExpiration
# Assign users to groups
$UserGroups | ForEach-Object { Add-ADPrincipalGroupMembership -Identity $UserName -MemberOf $_ -ErrorAction SilentlyContinue}
}
elseif ($Org.ToLower() -eq 'Development') {
$User = Get-ADUser -Identity _AdminTemplate -Properties Description, Office
# Get user group
$UserGroups = Get-ADPrincipalGroupMembership -Identity _DevelopmerTemplate
# Create user
New-ADUser -Instance $User -SamAccountName $UserName -UserPrincipalName $UPN -Surname $LastName -GivenName $FirstName -Name $DisplayName -Description ("Created: " +$CurrentDate) -AccountExpirationDate $AccExpiration
# Assign users to groups
$UserGroups | ForEach-Object { Add-ADPrincipalGroupMembership -Identity $UserName -MemberOf $_ -ErrorAction SilentlyContinue}
}
elseif ($Org.ToLower() -eq 'Executive Office') {
$User = Get-ADUser -Identity _AdminTemplate -Properties Description, Office
# Get user group
$UserGroups = Get-ADPrincipalGroupMembership -Identity _ExecutiveTemplate
# Create user
New-ADUser -Instance $User -SamAccountName $UserName -UserPrincipalName $UPN -Surname $LastName -GivenName $FirstName -Name $DisplayName -Description ("Created: " +$CurrentDate) -AccountExpirationDate $AccExpiration
# Assign users to groups
$UserGroups | ForEach-Object { Add-ADPrincipalGroupMembership -Identity $UserName -MemberOf $_ -ErrorAction SilentlyContinue}
}
# Verify input
Clear-Host
Write-Host "User created for: $UserName"
Write-Host "Properties:"
Get-ADUser -Identity $UserName -Properties *
# Enable Account -- Templates are disabled by default
$EnableUser = Read-Host "Enable $UserName's account? (Y/N)"
if ($EnableUser.ToLower() -eq 'y') {
Set-ADAccountPassword -Identity $UserName -Reset
Write-Host "Account Enabled"
Enable-ADAccount -Identity $UserName
}
# Decline Account enablment
elseif ($EnableUser.ToLower() -eq "n") {
Write-Host "Account remains disabled"
}
# Input validation
else {
Write-Host "Input not recognized"
Start-Sleep -Seconds 5
Exit
}