From ef79d32b19f9dbfd2b962a3fda45c49fdb660e67 Mon Sep 17 00:00:00 2001 From: Tre Hayes Date: Wed, 5 Jan 2022 07:16:37 -0600 Subject: [PATCH] Update 'Update_Departments_By_Cost_Center_ID.ps1' --- Update_Departments_By_Cost_Center_ID.ps1 | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/Update_Departments_By_Cost_Center_ID.ps1 b/Update_Departments_By_Cost_Center_ID.ps1 index 3668e71..90986ae 100644 --- a/Update_Departments_By_Cost_Center_ID.ps1 +++ b/Update_Departments_By_Cost_Center_ID.ps1 @@ -26,25 +26,27 @@ $users = Get-ADUser -Filter * -Properties DeptCode,VP,Department,Office | Select #loop through all departments $deptCodes foreach ($dept in $deptCodes) { - $Wildcard_VP = ($dept.'Vice President').Replace('.','*').Replace(' ','') #Replace 'FirstInitial. LastName' with 'FirstInitial*LastName' and remove any extra spaces + $Wildcard_VP = ($dept.'Vice President').Replace(', M.D.', '').Replace(' ','').Replace('.','*') #Replace 'FirstInitial. LastName' with 'FirstInitial*LastName' and remove any extra spaces $vp = Get-ADUser -Filter "Name -like '$wildcard_VP'" #Get AD object for the VP of the department $deptCode = $dept.'DEPT.' #Variable containing the department code #loop through all users. Set department, Office, VP attribute. Export CSV logging changes for each user - $seconds += (Measure-Command {foreach ($user in $users) { - if ($user.DeptCode -eq $deptCode) { - $user | Add-Member -MemberType NoteProperty -Name 'New Department' -Value $dept.DEPARTMENT #Add 'New Department' column to table - $user | Add-Member -MemberType NoteProperty -Name 'New Office' -Value $dept.DEPARTMENT #Add 'New Office' column to table - $user | Add-Member -MemberType NoteProperty -Name 'New VP' -Value $vp #Add 'New VP' column to table - Write-Host $($user | Format-Table | Out-String) - - #If user department name != correct department name OR user office name != correct office name OR user VP != current department VP + foreach ($user in $users) { + if ($user.nkchDeptCode -eq $deptCode) { + # If user department name != correct department name OR user office name != correct office name OR user VP != current department VP if ($user.Department -ne $dept.DEPARTMENT -or $user.Office -ne $dept.DEPARTMENT -or $user.VP -ne $vp) { + if ($vp -is [array]) { + $temp_vp = $($vp) + $vp = $user.VP + Write-Host "Updating $($user.Name)`'s VP from $temp_vp TO:`n $vp`n`n" + } + $user | Add-Member -MemberType NoteProperty -Name 'New Department' -Value $dept.DEPARTMENT #Add 'New Department' column to table + $user | Add-Member -MemberType NoteProperty -Name 'New Office' -Value $dept.DEPARTMENT #Add 'New Office' column to table + $user | Add-Member -MemberType NoteProperty -Name 'New VP' -Value $vp #Add 'New VP' column to table $user | Export-Csv $employees_Updated -Append -NoTypeInformation Set-ADUser -Identity $user.SamAccountName -Department $dept.DEPARTMENT -Office $dept.DEPARTMENT -Replace @{VP = $vp} -WhatIf } } - }}).TotalSeconds - $seconds + } } Remove-Item $DeptList_XLS \ No newline at end of file