Задать вопрос
  • Как создания скрипт подписи в outlook в GPO?

    @NortheR73
    системный инженер
    подписи Outlook хранятся в двух местах:
    1. C:\Users\<username>\AppData\Roaming\Microsoft\Signatures
    2. HKCU:\Software\Microsoft\Office\<Build>\Common\MailSettings (Build = "14.0","15.0","16.0", зависит от версии Office)

    Теперь сам скрипт:
    1. Получаете из AD нужные атрибуты
    2. Берете заранее сформированный HTML-шаблон подписи или формируете его прямо в скрипте
    3. Подставляете в шаблон данные пользователя из AD, сохраняете полученный файл в %AppData%
    4. Вносите в указанную ветку реестра параметры с именем пользователя и файлом подписи
    5. Свой скрипт добавляете в GPO как логон-скрипт

    Пример 1
    Пример 2
    Ответ написан
    3 комментария
  • Как правильно снять бекап с контроллера домена?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Вот вам ссылка на рекомендации изготовителя (Microsoft). Там - целый раздел, ссылка ведет на первую статью раздела. Если испытываете трудности с английским, то эти рекомедации переведены (как-то) и на русский язык.
    Резюме:
    1. встроенного средства архивирования Windows для резервного копирования и восстановления AD достаточно, но в плане удобства использования коммерческие решения лучше;
    2. одиночные контроллеры домена, не несущие других функций, восстанавливать нецелесообразно: никакой уникальной информации на них нет, и куда лучше просто добавить в AD новый КД с другим именем;
    3. берегитесь средств снятия и восстанвления образов диска, не поддерживающих AD специально, как средства резервного копирования и восстановления, такие средства безопасно использовать только в системе с ровно одним КД в лесу (по крайней мере - для физических КД, с виртуальными полегче - многие гипервизоры поддерживают идентификатор VM, а AD обучена правильно реагировать на его смену - но можно нарваться); однако при нужде использовать их можно - надо только отдельно копировать и восстанавливать до подключения в сеть Состояние системы.
    Ответ написан
    1 комментарий
  • Можно ли упростить данный код (см. внутри), заменив ConcurrentBag list'ом и установив lock?

    Код не читал, но попробуй так:
    У меня есть задача: есть много текстовых файлов, заполненных рандомным текстом, в котором иногда встречаются имэйлы.
    после того, как какой-то поток считал имэйлы, он должен записать их на один файл, при этом всех три потока должны записывать считаннные данные на этот один файл, не на разные файлы.


    1. Для каждого из файлов запусти по потоку (таске), каждый из которых пусть свой файл читает в поисках имеилов.
    2. Для записи в итоговый файл - заведи ещё 1 поток (таску).
    3. Коммуникацию между N читающими и 1 пишущим организуй через System.Threading.Channel

    Таким образом ты избавишься от ненужных блокировок и затрат на синхронизацию доступа к какому-то списку.

    UPD: в двух и больше файлах могут быть несколько одинаковых имэйлов и считывать мне надо именно первую копию имэйла из первого файла, где эта копия встретилась, если этот имэйл имеет несколько копий в разных файлах.

    UPD: тогда смотрим на количество данных.
    Если имеилов мало (по сравнению с количеством ОЗУ), то тогда можем прямо в памяти держать HashSet и проверять его в пишущем потоке.
    Если имеилов побольше - можем сделать HashSet не по самим и имеилам, а по их хешам.
    Если имеилов совсем много, то тогда можно записывать в отсортированную структуру данных на диск (двоичное дерево поиска например).

    UPD2:
    Для каждого из файлов запусти по потоку (таске), каждый из которых пусть свой файл читает в поисках имеилов.

    На самом деле можно попробовать запустить несколько потоков, разделив каждый файл ещё на N сегментов и назначив потокам эти сегменты. Плодить новые можно до тех пор, пока у тебя IO не кончится.
    Ответ написан
    1 комментарий
  • Как через Exchange Management Shell вывести список пользователей?

    @NortheR73
    системный инженер
    Get-Mailbox -ResultSize unlimited | Get-MailboxStatistics | where{$_.LastLogonTime -lt (Get-Date).AddMonths(-2)} | ft DisplayName,LastLogonTime -a
    Ответ написан
    Комментировать
  • Как узнать пользователя за каким компьютером работает из active directory?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    В AD не хранится информация о сопоставлении компьютера и работающего на нем пользователя.
    Вариантов 2.
    1. Обходить скриптом все онлайн машины через WinRM и дергать пользователей, формировать список.
    2. Добавить через GPO на все нужные машины startup скрипт, который при логоне на них пользователей будет писать нужные вам данные в AD - в любой из пустых Extanded Attributes, а затем просто через get-aduser или get-adcomputer доставать эти данные.
    Ответ написан
    Комментировать
  • Как узнать пользователя за каким компьютером работает из active directory?

    @NortheR73
    системный инженер
    Например, для единичного компа можно так
    Get-CimInstance –ComputerName CLIENT1 –ClassName Win32_ComputerSystem | Select-Object UserName

    Для множества компов - запихать вышеприведенный код в цикл и обходить все компы домена или выборочно по списку
    Ответ написан
    1 комментарий
  • Как настроить ansible для Firewalld?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Не должны Ансибл волновать никакие "уже существующие порты". Всё необходимое для использования в модуле фаерволла должно быть перечислено в инвентори, а не добываться через задний проход башизмами с регулярками.
    Ответ написан
    Комментировать
  • Как сделать выборку пользователей по определённым условиям?

    @NortheR73
    системный инженер
    как-то так:
    Get-ADUser -Filter {(Enabled -eq "true")} -Properties Name, sAMAccountName, Description, thumbnailPhoto | where{($_.SamAccountName -notmatch "\.") -and ($_.thumbnailPhoto -ne "")} | Select-Object Name, sAMAccountName, Description, thumbnailPhoto | Sort-Object Name | Out-GridView -Title "Пользователи с фото"
    Ответ написан
    2 комментария
  • Как преобразовать объект Get-Acl?

    @NortheR73
    системный инженер
    Get-Acl возвращает вам, по сути, набор строк. Перебираете этот набор с помощью Foreach и добавляете каждую строку как node нужного уровня в TreeView:
    PS C:\windows\system32> (Get-Acl c:\!New).Access.IdentityReference.Value
    BUILTIN\Администраторы
    NT AUTHORITY\СИСТЕМА
    BUILTIN\Пользователи
    NT AUTHORITY\Прошедшие проверку
    NT AUTHORITY\Прошедшие проверку
    Ответ написан
    1 комментарий
  • Как изменить атрибуты у пользователей в AD?

    @NortheR73
    системный инженер
    Команда и не будет распознавать DisplayName как Identity объекта "пользователь"...
    Журнал "Здоровье" так и пишет:
    The acceptable values for this parameter are:
    
    A distinguished name
    A GUID (objectGUID)
    A security identifier (objectSid)
    A SAM account name (sAMAccountName)

    Вам сначала надо выполнить поиск пользователя и получить его , например, distinguished name или sAMAccountName:
    Get-ADUser -Filter {DisplayName -eq "Иванов Иван Иванович"} -Properties DisplayName | select SamAccountName

    и после этого менять атрибуты
    Ответ написан
    4 комментария
  • Какие папки расположены на файловом ресурсе?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Нужно зайти в гугл, ввести в поиск "powershell list of all share folders" и попроходить по ссылкам из результата выдачи.
    Ответ написан
    Комментировать
  • Как правильно передать параметр для экспорта в CSV?

    @BeatHazard
    По первому вопросу не совсем понятно, чего вы хотите добиться? В приведенном вами скрипте, в блоке foreach команда
    Get-ADGroupMember -Identity $item.Groups | Select-Object SamAccountName, Name | Export-CSV "C:\dst\cll.CSV" -NoTypeInformation -Encoding UTF8
    перезатирает предыдущие данные при каждом прохождении цикла, если вам нужно сохранять данные - добавьте в конце ключ -append, если это не то, что нужно напишите, какой результат вы ожидаете увидеть в CSV файле, в остальном команда корректно выгружает список пользователей группы в CSV файл.
    По второму вопросу - чтобы получать дополнительные атрибуты объекта из AD перечислите их в ключе -Properties для команды Get-ADUser, например
    Get-ADUser -identity KolpakovMD1  -Properties description
    Ответ написан
    1 комментарий
  • Как ограничить вывод?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Powershell работает с объектами и фильтровать надо объекты. По факту вы хотите получить элементы свойства Access и отфильтровать их - вот и пишите этот фильтр явно, а потом преобразовывайте выдачу в нужный вам формат . Для одного субъекта это делается примерно так(выдачаформатируется так же, как и у вас):
    (Get-Acl \\addr\addr).Access | Where {$_.IdentityReference -ne 'Домен\Группа'} | ForEach ([String]$_.IdentityReference, String]$_.AccessControlType, [String]$_.FileSystemRights) -join ' '}

    Чтобы отфильтровать несколько групп либо добавьте в команду Where дополнительные аналогичные условия, объединив их по && , либо добавьте команды Where для каждой такой группы
    Теоретически, можно отфильтрофать и результат команды Format-List, которой вы пользуетесь, но это сложнее: она возвращает не строки, а весьма нетривиальные объекты, которые потом формируют выдачу
    Ответ написан
    2 комментария
  • Почему эта команда работает в отдельном окне и ничего не возвращает?

    @BeatHazard
    Для получения корректного вывода можете выполнить его таким образом:
    $version = (docker version)
    Ответ написан
    Комментировать
  • Как начать учить программированию детей начальной школы?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Поищите книги Scratch Programming. Там был язык какой-то и среда для детей.
    Ответ написан
    1 комментарий
  • Можно ли поднять уровень леса до 2016 используя Exchange 2013 CU23?

    @NortheR73
    системный инженер
    Правильно. Политика обновлений и жизненного цикла продуктов у MS меняются регулярно, поэтому Exchange 2013 SP1 = Exchange 2013 CU4, так что меняйте уровень леса, если других препятствий нет

    P.S. версию Exchange тоже желательно поменять на более современную
    Ответ написан
    Комментировать
  • Большая очередь Exchange server 2016. Как исправить?

    @NortheR73
    системный инженер
    Ваш Exchange пытается ответить отправителю-спамеру, что получателя не существует - вот и шлет NDR.
    Варианты:
    1. прикрутить хотя бы штатный анти-спам Exchange (пример)
    2. Поставить на Exchange дополнительное ПО, которое будет выполнять антиспам/антивирус задачи (например, Kaspersky Security for Exchange)
    3. поставить перед Exchange дополнительный MTA (postfix, KSMG и т.д.), который будет выполнять антиспам/антивирус задачи
    Ответ написан
    Комментировать
  • Как передать через include_role в роль ansible переменную, которая сама является переменной?

    @mureevms
    У Ansible есть приоритет переменных. Переменная, которую вы пытаетесь вынести, по приоритету находятся ниже, чем roles/role_name/vars/main.yml. Скорее всего вы выносите эту переменную в host_vars или group_vars, что логично, но не достаточно, поскольку roles/role_name/vars/main.yml имеет больший приоитет. Для решения я бы рекомендовал использовать roles/role_name/defaults/main.yml файл, он имеет наименьший приоритет и переменная будет переопределена из любого другого места, если там объявлена.

    Т.е. для вашего случая просто переименуйте каталог в роли с vars на defaults или же перенесите только эту переменную в defaults
    Ответ написан
    3 комментария
  • Как добавить самоподписанный ssl сертификат в доверенные через командную строку?

    Видимо так
    https://superuser.com/questions/463081/adding-self...

    Либо через certmgr.exe либо через Import-Certificate

    Ещё может быть полезен New-SelfSignedCertificate - он сразу и генерит и добавляет в доверенные
    Ответ написан
    Комментировать
  • Для чего нужен и как использовать класс SynchronizationContext в C#?

    Чем эта статья не устроила?
    https://learn.microsoft.com/en-us/archive/msdn-mag...
    Ответ написан
    Комментировать