Сценарий обновления Active Directory из запроса T-SQL - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь запросить данные из базы данных 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."}
    }

Я уверен, что это что-то очевидное, что мне не хватает, я надеюсь, что кто-то здесь может указать на это, спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...