Я пытаюсь запросить данные из базы данных SQL Server и использовать эти данные для обновления полей Active Directory Manager и Department. Я не уверен, где я иду не так. Пока это работает без проблем:
Import-Module SqlServer
Import-Module ActiveDirectory
$logfile = "C:\working\ADimportlog.txt"
$query = Invoke-Sqlcmd -Query "SELECT a.EmployeeNumber,a.UserId,b.UserID as SupervisorUserID, a.NickName + ' ' + a.lastname as Name, a.StoreNumber as DepartmentNumber, c.StoreName as DepartmentName
FROM CommonData..CompiledNonSensitiveEmployeeInformation a
JOIN CommonData..CompiledNonSensitiveEmployeeInformation b ON a.SupervisorEmployeeNumber = b.EmployeeNumber
JOIN CommonData..CompiledStoreData c ON a.StoreNumber = c.StoreNumber
WHERE SUBSTRING(a.EmploymentStatus, 1, 1) = 'A' AND LEN(a.UserId) > 3 AND c.LocationType = 4
ORDER BY EmployeeNumber" -Database Data -ServerInstance data
foreach ($item in $query) {
$name = $item.userid
$dept = $item.departmentname
$manager = $item.SupervisorUserID
$aduser = Get-ADUser -SearchBase "OU=IT,OU=Users,DC=corp,DC=Company,DC=com" -Filter {samaccountname -eq $name} -Properties *
foreach ($user in $aduser) {
$ADManager = (Get-ADUser (Get-ADUser $user -Properties manager).manager).samaccountName
if ($ADManager -eq $manager)
{Add-Content $logfile "User $($user.name) ,No Manager Changes needed."}
else
{$user | Set-ADUser -Manager $manager -ErrorAction Ignore -WhatIf; Add-Content $logfile "User $($user.name) MANAGER UPDATED."}
}
Когда я добавляю синтаксис отдела обновлений, я не получаю ожидаемых результатов. Случайные пользователи AD получают обновления отделов, которые не нуждаются в обновлении. Это повсюду, не знаю, где я ошибаюсь:
foreach ($user in $aduser) {
$ADdept = $user.Department
if ($dept -eq $ADdept)
{Add-Content $logfile "User $($user.name) ,No Department Changes needed."}
else
{$user | Set-ADUser -Department $dept -ErrorAction Ignore -WhatIf; Add-Content $logfile "User $($user.name) DEPARTMENT UPDATED."}
}
Я уверен, что это что-то очевидное, что мне не хватает, я надеюсь, что кто-то здесь может указать на это, спасибо