@EmachinesDIMA
junior DevOps

Как сделать поиск по таблице с подключением к Active Directory для получения email пользователя и отправки ему значений этого пользователя?

Всем привет ! Может есть у кого наброски ?

Есть файлик csv с фамилями и значениями.

Нужно сделать поиск по имени, подключение к АД для получения адреса пользователя и отослать значения на выгруженный из АД адрес.
  • Вопрос задан
  • 395 просмотров
Решения вопроса 2
@BeatHazard
Накидал скрипт, думаю то, что вам нужно.

$users = Import-Csv -Path "C:\test\test.csv" -Encoding Default -Delimiter ","
$AD = Get-ADUser -filter *

#Указание параметров почтового сервера
$EmailFrom = "email@address.ru" #необходимо указать адрес от имени которого будут отправляться письма
$Subject = "Тема письма" #необходимо указать тему письма
$smtpServer = "smtp.mail.ru" #необходимо указать адрес почтового сервера
$smtp = New-Object net.mail.smtpclient($smtpServer)
####################################

foreach ($user in $users)
{
$username = $user.name
$EmailTo = $ad | where-object {$_.name -like "*$username*"} | Select-Object UserPrincipalName
$EmailTo = $EmailTo.UserPrincipalName
$Monitor = $user.Monitor
$Mouse = $user.Mouse
$Body = "Monitor - $Monitor Mouse -$Mouse"
$smtp.Send($EmailFrom, $EmailTo, $Subject, $Body)
$EmailTo = $Null
}
Ответ написан
Danya_Violet
@Danya_Violet
CTO/CIO
from ldap3 import Server, Connection, SUBTREE

s = Server(ad_domain, use_ssl=True, port=636)  # Адрес домена, шифрование, порт
c = Connection(s, ad_admin, ad_password)

# Поиск учётной записи в домене (Active Directory) по фамилии или логину
def search_ad(last='*', login='*'):
    c.bind()
    c.search('ou=Офис, dc=domain, dc=local',
             '(&(objectCategory=Person)(sn={})(sAMAccountName={}))'.format(last, login), SUBTREE,
             attributes=['sAMAccountName', 'givenName', 'sn', 'cn', 'whenCreated', 'lastLogon', 'pwdLastSet',
                         'msDS-UserPasswordExpiryTimeComputed', 'memberOf', 'ipPhone', 'lockoutTime',
                         'distinguishedName'])
    a = c.entries
    c.unbind()
    return a


# Вывод информации учётной записи в домене (Active Directory)
def change_ad(cn):
    c.bind()
    c.search('ou=Офис, dc=domain, dc=local', '(&(objectCategory=Person)(cn={}))'.format(cn), SUBTREE,
             attributes=['sAMAccountName', 'givenName', 'sn', 'cn', 'whenCreated', 'lastLogon', 'pwdLastSet',
                         'msDS-UserPasswordExpiryTimeComputed', 'memberOf', 'ipPhone', 'lockoutTime'])
    a = c.entries
    for ad_user in c.entries:
        name = ad_user['givenName']
        last = ad_user['sn']
        login = ad_user['sAMAccountName']


# Отправка электронного письма
def send_email(message):
    msg_email = MIMEMultipart()

    msg_email['From'] = email_from
    msg_email['To'] = email_to
    msg_email['Subject'] = 'Тема'

    body = 'Текст сообщения'

    msg_email.attach(MIMEText(body, 'plain'))

    server = smtplib.SMTP_SSL('smtp.yandex.ru:465')
    server.login(email_from, email_password)
    text = msg_email.as_string()
    server.sendmail(email_from, email_to, text)
    server.quit()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы