# File : User Sync Batch
# Version 1.0
# Date July 2018
# Requires GAM https://github.com/jay0lee/GAM/wiki
# Local Variables
$UserObjectArray=""
$Str_GAMUser=""
$Str_GAMDomain=""
$Str_UserDomain= ""
$StrGAMUpdate=""
$Str_GAMUserTargetOU=""
$GAMError=""
Write-Host "Log Event, Starting Processing" $(Get-Date)
Write-Host "---------------------------------------------------"
$UserObjectArray = & C:\GAM\gam.exe print users ou 2> out-null| ConvertFrom-Csv | Where-Object {$_.orgUnitPath -eq "/"}
If ($UserObjectArray -eq $null) {Write-Host "Log Event,Nothing to do - exiting," $(Get-Date);exit}
else {Write-Host "Log Event, Processing" $UserObjectArray.Count "Records" $(Get-Date) }
$UserObjectArray | ForEach-Object{
# Reset Variables on each loop
$Str_GAMUser=""
$Str_GAMDomain=""
$Str_GAMUserTargetOU=""
$Str_GAMUser = $_.primaryEmail
if ($_.primaryEmail.Contains("@"))
{
# Strip out the users domains
$Str_GAMDomain = Get_User_Domain $_.primaryEmail
}
else
{
Write-Host "Error,Badly Formatted Email Address for" $_.primaryEmail, $(Get-Date)
exit
}
# Map users domain to landing OU
$Str_GAMUserTargetOU = Get_User_OU($Str_GAMDomain.ToLower())
# Build String for Log
$StrGAMUpdate = "C:\GAM\gam.exe update OU " + '"' + $Str_GAMUserTargetOU + '"' + " add " + $Str_GAMUser
Write-Host "---------------------------------------------------"
Write-Host "Log Event, Processing " $StrGAMUpdate, $(Get-Date)
# Move user to landing OU
$GAMError = & C:\GAM\gam.exe update OU $Str_GAMUserTargetOU add $Str_GAMUser 2> out-null
#Loop
}
Function Get_User_OU () {
$OUPath="/Students/New Accounts"
switch ($args) {
"stfredsschool.org.uk" {$ret = "/St Freds Academy" + $OUPath}
"greyfriars.org.uk" {$ret = "/Greyfriars" + $OUPath}
# Add Schools as required.
default {$ret = "/"}
}
Return $ret
}
Function Get_User_Domain () {
$ret = $args.split("@")
Return $ret[1]
}
# Version 1.0
# Date July 2018
# Requires GAM https://github.com/jay0lee/GAM/wiki
# Local Variables
$UserObjectArray=""
$Str_GAMUser=""
$Str_GAMDomain=""
$Str_UserDomain= ""
$StrGAMUpdate=""
$Str_GAMUserTargetOU=""
$GAMError=""
Write-Host "Log Event, Starting Processing" $(Get-Date)
Write-Host "---------------------------------------------------"
$UserObjectArray = & C:\GAM\gam.exe print users ou 2> out-null| ConvertFrom-Csv | Where-Object {$_.orgUnitPath -eq "/"}
If ($UserObjectArray -eq $null) {Write-Host "Log Event,Nothing to do - exiting," $(Get-Date);exit}
else {Write-Host "Log Event, Processing" $UserObjectArray.Count "Records" $(Get-Date) }
$UserObjectArray | ForEach-Object{
# Reset Variables on each loop
$Str_GAMUser=""
$Str_GAMDomain=""
$Str_GAMUserTargetOU=""
$Str_GAMUser = $_.primaryEmail
if ($_.primaryEmail.Contains("@"))
{
# Strip out the users domains
$Str_GAMDomain = Get_User_Domain $_.primaryEmail
}
else
{
Write-Host "Error,Badly Formatted Email Address for" $_.primaryEmail, $(Get-Date)
exit
}
# Map users domain to landing OU
$Str_GAMUserTargetOU = Get_User_OU($Str_GAMDomain.ToLower())
# Build String for Log
$StrGAMUpdate = "C:\GAM\gam.exe update OU " + '"' + $Str_GAMUserTargetOU + '"' + " add " + $Str_GAMUser
Write-Host "---------------------------------------------------"
Write-Host "Log Event, Processing " $StrGAMUpdate, $(Get-Date)
# Move user to landing OU
$GAMError = & C:\GAM\gam.exe update OU $Str_GAMUserTargetOU add $Str_GAMUser 2> out-null
#Loop
}
Function Get_User_OU () {
$OUPath="/Students/New Accounts"
switch ($args) {
"stfredsschool.org.uk" {$ret = "/St Freds Academy" + $OUPath}
"greyfriars.org.uk" {$ret = "/Greyfriars" + $OUPath}
# Add Schools as required.
default {$ret = "/"}
}
Return $ret
}
Function Get_User_Domain () {
$ret = $args.split("@")
Return $ret[1]
}
No comments:
Post a Comment