обновить / изменить пользовательский атрибут ldap powershell - PullRequest
0 голосов
/ 08 января 2020

Мой сценарий powershell обновит атрибут пользователя ldap для технологий не-Microsoft (Active Directory), и я столкнулся с некоторыми проблемами в этом. Это моя ссылка ссылка о том, как обновить технологию сторонних производителей (Active Directory)



Это часть моего сценария powershell

                if($time -ne $null)
                     {
                        $eD = $time.AddDays(7)
                        write-host "The date after : "$eD
                        Set-ADUser xxxxx -AccountExpirationDate $eD
                        $a = New-Object "System.DirectoryServices.Protocols.DirectoryAttributeModification"
                        write-host $a
                        $a.Name = "String1"
                        write-host $a
                        $a.Operation = [System.DirectoryServices.Protocols.DirectoryAttributeOperation]::Add
                        write-host $a
                        #add values of the attribute
                        $a.Add("set")
                        write-host $a
                        $r.Modifications.Add($a)
                        $re = $ldapserver.SendRequest($r);
                        if ($re.ResultCode -ne [System.directoryServices.Protocols.ResultCode]::Success)
                                {
                                    write-host "Failed!"
                                    write-host ("ResultCode: " + $re.ResultCode)
                                    write-host ("Message: " + $re.ErrorMessage)
                                }
                     }



Вот мой вывод сценария

The date after 7 days :  14/1/2020 11:40:03 AM



0
set
You cannot call a method on a null-valued expression.
At D:\deployment\test_ck.ps1:94 char:25
+                         $r.Modifications.Add($a)
+                         ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull



Я не могу понять, почему $a имеет нулевое значение

Это то, что присвоено $r

    $Domain='ou=test,ou=tes1,o=test2'
    $fDomain ='(objectClass=User)'

    $sDomain = New-Object System.DirectoryServices.Protocols.SearchRequest -ArgumentList $Domain,$fDomain,

    $r = (new-object "System.DirectoryServices.Protocols.ModifyRequest")
    $r = $sDomain

1 Ответ

0 голосов
/ 08 января 2020

Простой сценарий PowerShell, приведенный ниже, использует командлет Get-ADUser из модуля ActiveDirectory PowerShell, чтобы извлечь всех пользователей в одном подразделении, а затем выполнить итерацию пользователей, чтобы задать несколько свойств AD.

# Get all users in the Finance OU.
$FinanceUsers = Get-ADUser -Filter * -SearchBase "OU=Finance,OU=UserAccounts,DC=FABRIKAM,DC=COM"
# Iterate the users and update the department and title attributes in AD.

В примере используется параметр Instance Set-ADUser для обновления каждого пользователя в подразделении. Этот параметр разрешает любые изменения, внесенные в объект ADUser для go соответствующего объекта Active Directory, при этом обновляются только те свойства объекта, которые изменились.

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