Wednesday, March 4, 2015

Powershell script to create a new domain user object

Ok so since we've migrated from on premise Exchange 2010 to Office365 our old way of creating new users had to be re-worked.  Now we're forced to manually input the values for proxyaddresses or else they are unable to have a mailbox license assigned to them.

So I just completed a nice script that among other things, does exactly that.  It's been sanitized but here's it is in all it's glory.

#Create-NewADUserO365.ps1
#3/3/15 Benjamin Hart, Unified Brands, Inc
#Created with Powershell ISE
#This powershell script will create a domain user object using a format of lastname, firstname, a SAM of first initial + last name
#It will also populate displayname, a default password, office and both proxyaddresses, the primary as used in your org and the 
#Dover required O365 one.  It will also verify the primary proxy address is not already used.
#With set-aduser you can alter almost any attribute of the user.

$theOU = read-host "Enter the OU name"
$Surname = read-Host "Enter the surname"
$GivenName = read-host "Enter first name"
$DisplayName = "$Surname, $GivenName"
$Password = "December1"
$name = $GivenName.substring(0,1)+$Surname
$proxyaddress = read-host "Enter the email address in full"


Import-Module activedirectory
import-module servermanager



#Edit the SearchBase to match your organization
$myOU = Get-AdOrganizationalUnit -Filter "Name -eq '$theOU'" -Searchbase 'OU=People,DC=domain,DC=org'


while (Get-ADuser  -filter * -Properties ProxyAddresses|?{$_.proxyaddresses -contains $proxyaddress})
{
  $proxyaddress = read-host "$proxyaddress is already in use, please try another one"
}
Write-Host "$proxyaddress is not used yet."


#Edit the below to match your domain(s)
$DomainProxyAddress = "$("smtp:")$($givenname.substring(0,1))$surname-$("domain")-$("net")@domain.mail.onmicrosoft.com"
$Description = read-host "Enter persons description"
$jobtitle = read-host "Enter the Job Title"

#Edit the below to match your locations
$office = read-host "Enter the user's location, Michigan, Mississippi, Georgia, Oklahoma or Remote"

#Edit your locations if you choose to use this part
Switch ($Office)  {
    "Michigan" {
        $Street = "001 Any Street."
        $City = "Weidman"
        $State = "Michigan"
        $Zip = "48898"
        $scriptpath = "\\domain\netlogon\milogin1.bat"
}
    "Mississippi"  {
        $Street = "789 Any Street."
        $City = "Jackson"
        $State = "Mississippi"
        $Zip = "39272"
        $scriptpath = "\\domain\netlogon\adlogin.bat"
        }
    "Oklahoma"  {
        $Street = "456 Any Street"
        $City = "Pryor"
        $State = "Oklahoma"
        $Zip = "74361"
        $scriptpath = "\\domain\netlogon\oklogin.bat"
        }
    "Georgia"  {
        $Street = "123 Any Street"
        $City = "Conyers"
        $State = "Georgia"
        $Zip = "30013"
}
}

$department = read-host "Enter the users Department"

New-ADUser -path $myOU -samaccountname $name -name $displayname -DisplayName $DisplayName -Surname $Surname -givenname $givenname -AccountPassword (ConvertTo-SecureString $Password -AsPlainText -force) -enabled:$false
set-aduser $name -emailaddress $proxyaddress -Description $Description -Title $jobtitle -Office $office -StreetAddress $Street -city $city -state $state -PostalCode $zip -UserPrincipalName $proxyaddress -ScriptPath $scriptpath -Department $department -Company "My Companyc" -Country "US"

set-aduser $name -add @{proxyaddresses = "$("SMTP:")$proxyaddress"}
set-aduser $name -add @{ProxyAddresses = "$doverproxyaddress"}

 
get-aduser $name 



No comments:

Post a Comment