Blue Flower

#Global Variables
$OutputFolder = "C:\Temp\Output\"


Function Add-To-Group($SAM,$GroupName)
{
$OutFile = $OutputFolder + $Groupname + ".log"
$Members = Get-ADGroupMember -Identity $GroupName -server Prod.Mgnx.cloud -Recursive | Select -ExpandProperty SAMAccountName
if ($SAM)
{
$user = Get-ADUser -LDAPFilter "(&(objectCategory=User)(sAMAccountName=$SAM))" -server prod.mgnx.cloud
If (!$user)
{
$LogInfo = $SAM + " is not in Prod Active Directory"
Write-Host $LogInfo -ForegroundColor Red
Write-Output $LogInfo | Out-File -FilePath $OutFile -append
}
Else
{
If ($Members -contains $SAM)
{
$LogInfo = $user.name + " is already a member of $GroupName so addition is not required"
Write-Host $LogInfo
Write-Output $LogInfo | Out-File -FilePath $OutFile -append

}
Else
{
$LogInfo = $user.name + " is not a member. Attempting to add now."
Write-Host $LogInfo
Write-Output $LogInfo | Out-File -FilePath $OutFile -append
Add-ADGroupMember -Identity $GroupName -server Prod.Mgnx.cloud -Members $user
}
}
}
}

Function Add-To-CompGroup($SAM,$AddGroupName)
{
$OutFile = $OutputFolder + $AddGroupname + ".log"
if ($SAM)
{
$EUD = Get-ADComputer -Filter { name -like $SAM} -server prod.mgnx.cloud | Select -ExpandProperty SAMAccountName
write-host "Computer name is " + $EUD
If (!$EUD)
{
$LogInfo = $SAM + " is not in Prod Active Directory"
Write-Host $LogInfo -ForegroundColor Red
Write-Output $LogInfo | Out-File -FilePath $OutFile -append
}
Else
{
$ADGroup= Get-ADGroup -Filter { name -like $AddGroupName} -server MGXLMDSPDC001.prod.mgnx.cloud
$Members = Get-ADGroupMember -Identity $ADGroup -server prod.mgnx.cloud | Select -ExpandProperty SAMAccountName
If ($Members -contains $EUD)
{
$LogInfo = $EUD.name + " is already a member of $AddGroupName so addition is not required"
Write-Host $LogInfo
Write-Output $LogInfo | Out-File -FilePath $OutFile -append

}
Else
{
$LogInfo = $EUD.name + " is not a member. Attempting to add now."
Write-Host $LogInfo
Write-Output $LogInfo | Out-File -FilePath $OutFile -append
Add-ADGroupMember -Identity $AddGroupName -server Prod.Mgnx.cloud -Members $EUD
}
}
}
Else
{
$LogInfo = "There is no machine associated with this column."
Write-Host $LogInfo
Write-Output $LogInfo | Out-File -FilePath $OutFile -append
}
}

Function Mig-ADMembers($TargetADGroup,$Groupname)
{
$OutFile = $OutputFolder + $TargetADGroup + ".log"
$ADGroup2 = Get-ADGroup $Groupname -Properties Member -server CSSVWD2PRADOM04.SSA-Intra.net
$LogInfo = "Getting AD Members of " + $ADGroup2
Write-Host $LogInfo
write-Output $LogInfo| Out-File -FilePath $OutFile -append
foreach ($d in $DuelCSV)
{
$SAM=$d.SamAccountName
If ($SAM)
{
$User = Get-ADUser -LDAPFilter "(&(objectCategory=User)(sAMAccountName=$SAM)(memberof=$ADGroup2))" -server CSSVWD2PRADOM04.SSA-Intra.net
if ($User)
{
$LogInfo = $User.Name + " is a member of " + $Groupname
Write-Host $LogInfo
write-Output $LogInfo| Out-File -FilePath $OutFile -append
Add-To-Group $SAM $TargetADGroup
}
}
}

}

Function Mig-ADMembersComputer($Groupname,$TargetADGroup)
{
$OutFile = $OutputFolder + $TargetADGroup + ".log"
$ADGroup2 = Get-ADGroup $Groupname -Properties Member -server CSSVWD2PRADOM04.SSA-Intra.net
$LogInfo = "Getting AD Members of " + $ADGroup2
Write-Host $LogInfo
write-Output $LogInfo| Out-File -FilePath $OutFile -append
foreach ($d in $DuelCSV)
{
$SAM=$d.SamAccountName
$Comp1=$d."Computer Name 1"
$Comp2=$d."Computer Name 2"
$Comp3=$d."Computer Name 3"
$Comp4=$d."Computer Name 4"
$Comp5=$d."Computer Name 5"
$Comp6=$d."Computer Name 6"
$Comp7=$d."Computer Name 7"
$Comp8=$d."Computer Name 8"
$Comp9=$d."Computer Name 9"
$Comp10=$d."Computer Name 10"
If ($SAM)
{
$User = Get-ADUser -LDAPFilter "(&(objectCategory=User)(sAMAccountName=$SAM)(memberof=$ADGroup2))" -server CSSVWD2PRADOM04.SSA-Intra.net
if ($User)
{
$LogInfo = $User.Name + " is a member of " + $Groupname
Write-Host $LogInfo
write-Output $LogInfo| Out-File -FilePath $OutFile -append
Add-To-CompGroup $Comp1 $TargetADGroup
Add-To-CompGroup $Comp2 $TargetADGroup
Add-To-CompGroup $Comp3 $TargetADGroup
Add-To-CompGroup $Comp4 $TargetADGroup
Add-To-CompGroup $Comp5 $TargetADGroup
Add-To-CompGroup $Comp6 $TargetADGroup
Add-To-CompGroup $Comp7 $TargetADGroup
Add-To-CompGroup $Comp8 $TargetADGroup
Add-To-CompGroup $Comp9 $TargetADGroup
Add-To-CompGroup $Comp10 $TargetADGroup
}



}
}
}


Function Get-File($initialDirectory)
{
[hashtable]$return = @{}
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")|Out-Null
$inputfile = New-Object System.Windows.Forms.OpenFileDialog
$inputfile.initialDirectory = "MyComputer"
$inputfile.filter = "CSV (*.csv) | *.csv"
$inputfile.showdialog() | Out-Null
$return.File = $inputfile.FileName
$return.SFile = $inputfile.safeFileName -replace ".{4}$"

return $return
}


Function Add-All-ADGroup($GroupName)
{
ForEach ($user in $DuelCSV)
{
$SAM=$user.SamAccountName
Add-To-Group $SAM $GroupName
}
}

 

# Main Script

cls
$Duel = Get-File
$DuelCSV = Import-Csv $Duel.File
Add-All-ADGroup "USR-PROD-MGXALL-Users"
Mig-ADMembers "USR-PROD-DAC-IO-3rdPartyDevices-Encrypted-R" "ROLE-G-LUM-PHOENIX"
Mig-ADMembersComputer "APPL-G-SCCMThermo-DCS4-2.1-R02-B01" "SWR-WKS-PROD-APPV-DCS4-21"