Как вычислить и удалить неактивных подписчиков?

Наверняка у каждого, что ведет блог/коммерческую страницу в Инстаграм* было так, что показатели охвата падали, и активность подписчиков сводилась к нулю. Это плохой результат, который негативно влияет на качество профиля и количество продаж/популярность в целом. Это обязательно следует исправить, но как именно и зачем? Давайте узнаем.
Зачем удалять неактивных пользователей из подписок
До сих пор бытует мнение, что чем больше подписчиков в Инстаграм* – тем лучше. В какой-то мере это правда – это ценный ресурс для медийных личностей, у которых цена рекламного поста напрямую зависит от количества подписчиков. Другое ли дело, если вы ведете страницу для продажи определенной продукции или изделий на заказ.
Немного странно выглядит, если у вас полно подписчиков и мало отзывов, комментариев и лайков. Это может настораживать обычных пользователей, но это лишь верхушка айсберга. Новые алгоритмы Инстаграм* переиграли прежнюю ситуацию и взаимосвязь изменилась. Теперь все выглядит иначе, и при большом количестве неактивных подписчиков ситуация выглядит так:
Много подписчиков => много неактивных пользователей => малый охват => контент реже появляется в ленте => показатели практически на нуле, и прежняя рентабельность уменьшается в несколько раз.
Из этого следует вывод – неактивные подписчики тормозят развитие площадки, и обесценивают ваши труды при создании контента, оформлении и даже при вкладывании в это денег. Еще требуется увеличить коэффициент вовлеченности, который в процентном соотношении показывает, сколько у вас активных подписчиков. Именно этот параметр решающий, ведь от него зависит, будут ли ваши публикации в ТОПе.
Несомненно, следует уделить все силы на привлечение целевой аудитории, но до этого нужно провести очистку и избавиться от «балласта» в виде неактивных, незаинтересованных подписчиков. Но как?
Как удалить неактивных подписчиков
Теперь, когда вы решились на удаление подписчиков, возникает небольшая проблема. Дело в том, что в Инстаграм* все несколько иначе, чем в других социальных сетях, и для очистки придется постараться.
Блокировка аккаунта
Вместо удаления подписчика можно заблокировать. Это то же самое, что и занести человека в «черный список», но включает в себя намного больше ограничений. Что будет, если заблокировать пользователя?
- Он будет удален из подписчиков, и ваш аккаунт не будет числиться у него в подписках.
- Пользователь, которого заблокировали, даже не сможет найти вас.
- Если по причине бага или неполадок аккаунт будет найден, в нем не будут отображаться публикации. Вообще.
- Блокировка и на принятие сообщений в Директ.
- Под фотографиями исчезнут все комментарии и лайки от заблокированного.
Но для массового удаления способ не подойдет, так как даже для 100 человек придется потратить день. Порядок действий следующий:
- Зайдите в приложении на свою страницу и откройте список с подписанными на вас пользователями.
- Найдите того, кого хотите заблокировать и перейдите в его профиль.
- Найдите кнопку в виде трех вертикально расположенных точек (вверху справа).
- В предложенном списке будет функция «Заблокировать», клинките на нее.
Через приложение на телефоне блокировать намного проще.
Закрыть аккаунт
Если вы заботитесь и о защите своих данных, то вы сможете закрыть от посторонних глаз всю информацию. Это применимо и для удаления подписчика. Для этого:
- Войдите в свой профиль и откройте настройки.
- Найдите раздел «Закрытый аккаунт».
- Перетяните включатель вправо, при включении серый цвет сменится на голубой.
- Теперь откройте список подписчиков и найдите того, кого будем блокировать.
- Напротив каждого пользователя будет по три вертикально расположенные точки, кликните на них.
- Подтвердите удаление.
Способ удобен тем, что вряд ли кто-то заметит удаление, но все же и он затратный по времени.
Самый простой способ
Помните коварные уроки алгебры в школе, когда каждый из нас учился решать систему уравнений? Вначале нам рассказывали, как это делать по стандарту, а когда все изрядно измучились, добрый преподаватель рассказывал о самом простом способе.
Это не значит, что мы хотим доставить Вам неудобства – первые два способа были описаны для сравнения с сервисом Spamguard, который облегчит задачу очистки аккаунта и сэкономить уйму времени. Умные люди уже давно усвоили, что малоприятные занятия лучше всего делегировать, так как время – ресурс более ценный, чем деньги.
- Настроить списки (белый и черный), чтобы можно было отсортировать подписчиков и случайно не удалить важных.
- Поставить блокировку на иностранцев, от которых коэффициент вовлеченности лишь пострадает.
- Сделать все быстро и практически без Вашего участия.
Чтобы попробовать, вам следует:
- Выставить предупреждающий пост о том, что вы будете проводить чистку – так те, кому интересно, поставят лайки, и они не будут засчитаны сервисом как неактивные (неактивными считаются те, кто больше 30-ти дней не ставил Вам лайк, коммент).
- Войти на официальный сайт Spamguard и найти в меню «Регистрация».

- Процедура простая и быстрая, и можно приступать к очистке; первый раз это бесплатно.
- Запустите проверку.

- На стадии «Настройка» вы получите список тех, кто неактивен и возможность настроить списки.

- После нажимаем «Очистка».
- В разделе «Защита» результат закрепляется, и вы выставляете дополнительные фильтры, чтобы в будущем вам не пришлось заниматься массовым удалением.
Результат вы сможете заметить уже через несколько дней, так как у вас останутся только те, кому действительно интересен контент, а это успех! После этого можно приступать к наращиванию целевой аудитории.
Только сегодня! Получите полное сканирование вашего Инстаграм*-аккаунта всего за 1 рубль
Определение отсутствия активности пользователей
Иногда отслеживание активности пользователя может быть полезным. Например, для автоматического выхода пользователей из системы по соображениям безопасности.
Почему стоит беспокоиться об автоматическом выходе?
Многие приложения предоставляют пользователям доступ к их личным данным. Но некоторые пользователи могут забыть выйти из системы и оставить сеанс открытым. Это опасно, поскольку кто-то другой может использовать этот сеанс для получения конфиденциальных данных.
Данную проблему может решить отслеживание того, взаимодействует ли пользователь с приложением в течение определенного периода времени. Если это время превышено, происходит автоматический выход из системы.
В этой статье я покажу, как реализовать подобную логику отслеживания активности пользователя на основе следующего примера .
Шаг 1: Реализация логики отслеживания
Создадим две функции. Первая будет отвечать за сброс таймера при каждом взаимодействии пользователя с приложением, а вторая – обрабатывать ситуацию, когда пользователь становится неактивным:
- resetUserActivityTimeout — это метод, который отвечает за сброс существующего счетчика и запуск нового при каждом взаимодействии пользователя с приложением.
- inactiveUserAction – метод, который запускается по истечении времени ожидания активности пользователя.
Шаг 2. Отслеживание активности
Теперь создадим методы, которые отвечают за отслеживание активности пользователя. В них мы добавим прослушиватели , которые при обнаружении события будут вызывать метод resetUserActivityTimeout. Для простоты мы ограничимся несколькими наиболее распространенными событиями.
Теперь осталось вызвать activateActivityTracker на странице. Но в приведенном выше коде есть серьезная проблема производительности. Каждый раз, когда пользователь взаимодействует с приложением, запускается вся логика. Но некоторые события запускаются огромное количество раз, даже если это не является необходимым.
Рассмотрим событие mousemove. Даже если вы перемещаете мышку одним касанием, событие mousemove будет запущено десятки раз. Можно решить эту проблему, введя регулятор, который позволит логике отслеживания активности пользователя запускаться только один раз за указанный период времени.
Шаг 3: Улучшение производительности
Сначала добавим еще одну переменную, которая будет хранить ссылку на время ожидания регулятора.
Затем реализуем метод, который создаст регулятор. Он проверяет, существует ли счетчик таймера, а если нет, то запускаем resetUserActivityTimeout через определенный промежуток времени. Это период, за который активность пользователя не будет повторно вызывать логику отслеживания. По истечении этого времени счетчик регулятора сбрасывается. Что позволяет следующему взаимодействию сбросить отслеживание активности пользователя.
Мы создали новый метод, который должен запускаться при взаимодействии с пользователем. Поэтому изменим обработчик событий с resetUserActivityTimeout на userActivityThrottler.
Бонус: применим это с Vue!
Теперь посмотрим, как импортировать эту логику в сборку приложения с помощью Vue. Мы будем использовать этот пример .
Сначала переместим все переменные в компоненты data .
Затем переместим все функции в methods :
Поскольку мы используем Vue, можно отбросить все прямые манипуляции с DOM и полагаться на свойство данных isInactive. Мы можем получить доступ к свойству data непосредственно в шаблоне компонента.
Vue поставляется с хуками жизненного цикла компонентов. Используем хук beforeMount .
Теперь удалим все прослушиватели, которые мы зарегистрировали, и очистим все таймауты, когда жизненный цикл компонента закончится.
Это все!
В рассмотренном нами примере основное внимание уделяется обнаружению взаимодействия пользователя с приложением. А также запуску метода, когда взаимодействие не обнаружено в течение определенного периода времени.
Обнаружение бездействующих пользователей с помощью API Idle Detection
Статья, перевод которой мы сегодня публикуем, посвящена новому API Idle Detection. Этот API уведомляет разработчиков при бездействии пользователя, указывая на то, что пользователь не работает с клавиатурой, мышью, экраном. API сообщает об активации хранителя экрана, о блокировке экрана, о переходе пользователя на другой экран. Разработчик при этом может настроить пороговые уровни показателей активности пользователя, достижение которых вызывает срабатывание API.
Рекомендованные способы использования API Idle Detection
Вот примеры проектов, в которых может быть использован новый API:
- Приложения-чаты или сайты социальных сетей могут использовать этот API для того чтобы сообщать пользователям о том, доступны ли в настоящее время те, с кем они общаются.
- Общедоступные приложения, работающие на информационных стендах, например — в музеях, могут воспользоваться этим API для перехода на «домашний» экран в ситуации, когда с информационным стендом никто не работает.
- Приложения, которые выполняют ресурсоёмкие вычисления, например — выводящие некие диаграммы, могут ограничить вычисления в то время, когда пользователь не взаимодействует с устройством.
Текущий ход работ
| Шаг | Состояние |
| 1. Создание пояснений к API | Завершено |
| 2. Создание черновика спецификации | Не начат |
| 3. Сбор отзывов и доработка проекта | Выполняется |
| 4. Испытания по схеме Origin Trial | Выполняется |
| 5. Запуск | Не начат |
Использование API Idle Detection
▍Включение через флаги Chrome
Для того чтобы поэкспериментировать с API Idle Detection, обойдясь при этом без токена Origin Trial, нужно включить флаг #experimental-web-platform-features в chrome://flags .
▍Включение поддержки во время действия программы Origin Trial
API Idle Detection доступен в Chrome 84 по схеме Origin Trial. Ожидается, что эта фаза завершится с выходом Chrome 87.
Программа Origin Trial позволяет разработчикам пользоваться новыми возможностями Chrome и делиться с веб-сообществом отзывами об удобстве, практичности и эффективности этих возможностей. Здесь можно найти подробности об этой программе. Подписаться на участие в программе можно на странице регистрации.
▍Регистрация в программе Origin Trial
-
токен для интересующей вас возможности.
Добавьте токен на страницы экспериментального проекта. Существует 2 способа это сделать:
- Добавьте <meta>-тег origin-trial в заголовок каждой страницы. Например, это может выглядеть так: <meta http-equiv=«origin-trial» content=«TOKEN_GOES_HERE»>.
- Если у вас есть доступ к настройкам сервера — может добавить токен с использованием HTTP-заголовка Origin-Trial. В результате в заголовке ответа должно появиться нечто, подобное следующему: Origin-Trial: TOKEN_GOES_HERE.
▍Проверка возможности использования API
Для проверки поддержки API Idle Detection можете воспользоваться следующим кодом:
Концепции, лежащие в основе API Idle Detection
API исходит из предположения о наличии некоего уровня взаимодействия между пользователем, пользовательским агентом (речь идёт о браузере) и операционной системой используемого устройства. Это взаимодействие оценивается с точки зрения двух показателей:
- Состояние пользователя: active или idle . Соответствующее значение зависит от того, взаимодействовал ли пользователь с браузером в течение некоего периода времени.
- Состояние экрана: locked или unlocked . Это значение зависит от имеющихся в системе средств блокировки экрана (вроде хранителя экрана), которые не дают пользователю взаимодействовать с браузером.
Модель намеренно не стремится к формальному различению видов взаимодействия пользователя с конкретным содержимым (то есть, с веб-страницей, использующей этот API, открытой во вкладке), с браузером в целом, с операционной системой. За это отвечает браузер.
Использование API Idle Detection
Первый шаг при работе с API Idle Detection заключается в проверке того, имеется ли у страницы разрешение notifications . Если такого разрешения нет — его нужно запросить у пользователя.
Второй шаг заключается в создании экземпляра IdleDetector . Минимальное значение параметра threshold , задающего пороговое значение времени бездействия пользователя, равняется 60000 мс (1 минута). Запустить систему обнаружения бездействия пользователя можно, вызвав метод start() объекта IdleDetector . Этот метод принимает объект с параметрами, в котором содержится значение threshold в миллисекундах и необязательное значение signal (объект AbortSignal), позволяющее отключить наблюдение за активностью пользователя.
Отключить обнаружение неактивности пользователя можно, вызвав метод abort() объекта AbortController.
Пример
Увидеть API Idle Detection в действии можно, взглянув на демонстрационный пример Ephemeral Canvas. Здесь пользователь может нарисовать что-нибудь на странице. Страница очищается после того, как не было зафиксировано активности пользователя в течение 60 секунд. Такое приложение, например, могло бы быть запущено на терминале в универмаге. Оно могло бы быть предназначено для того, чтобы чем-то занять детей, позволив им порисовать на экране всякие закорючки.

Демонстрация использования API Idle Detection
Полифилл
Некоторые компоненты API Idle Detection могут быть заменены полифиллами и библиотеками для обнаружения бездействия пользователя, вроде idle.ts, но эти подходы ограничены рамками веб-проектов, которые их реализуют. Например, подобная библиотека, используемая в веб-приложении, нуждается в выполнении затратных операций по наблюдению за событиями ввода или по отслеживанию изменения видимости страницы. Возможности библиотек сильно ограничены ещё и тем, что они не в состоянии узнать о том, когда пользователь ничего не делает за пределами страниц, использующих эти библиотеки. Например — тогда, когда пользователь находится на другой вкладке браузера, или тогда, когда он попросту вышел из своей учётной записи на компьютере.
Безопасность и разрешения
Команда разработчиков Chrome спроектировала и реализовала API Idle Detection, ориентируясь на базовые принципы, определённые в этом документе. Сюда входят принципы, дающие пользователю возможность управлять возможностями браузеров, а также принципы, обеспечивающие прозрачность и эргономичность технологий. Возможность использования данного API контролируется разрешением notifications. Приложение, для того чтобы оно могло бы пользоваться этим API, должно выполняться в контексте безопасности верхнего уровня. Мы использовали именно это разрешение из-за того, что оно соответствует известным нам нуждам пользователей, но мы готовы, в будущем, это расширить. Если это не соответствует вашему сценарию использования данного API — ждём ваших отзывов.
Конфиденциальность и средства, позволяющие пользователю управлять API Idle Detection
Мы всегда стремимся к тому, чтобы не позволить злоумышленникам пользоваться возможностями новых API в их целях. Например, веб-сайты, с виду независимые, могут контролироваться одним лицом, получая сведения о бездействии пользователя и сопоставляя собранные данные для идентификации уникальных пользователей на разных сайтах. Для того чтобы помешать подобным атакам, API Idle Detection ограничивает детализацию событий, связанных с обнаружением бездействия пользователя. Кроме того, на уровне пользовательского агента, данные, выдаваемые этим API, могут быть особым образом обработаны. Например, мы планируем сделать это в Chrome для того чтобы помешать выполнению соответствующих атак. Кроме того, в ходе анализа угроз мы решили ограничить возможность применения данного API с помощью разрешения notifications . Благодаря этому на пути злоумышленников возведены достаточно высокие барьеры, которые способны помешать им в использовании основных возможностей API. Речь идёт об отправке уведомлений и о выявлении бездействия пользователя.
Обратная связь
Команда разработчиков Chrome будет рада узнать о вашем опыте использования API Idle Detection.
▍Поделитесь с нами своими идеями об устройстве API
Есть ли в этом API что-то такое, что работает не так, как ожидается? Может, в нём не хватает чего-то такого, что нужно вам для реализации вашей идеи? Откройте новую задачу в трекере проекта или прокомментируйте существующую задачу.
▍Сообщите о проблеме с реализацией
Нашли ошибку в реализации Chrome? А может, оказалось, что реализация отличается от спецификации? Сделайте запись об ошибке на new.crbug.com. Постарайтесь включить как можно больше деталей в своё сообщение, добавьте в него простую инструкцию о том, как воспроизвести ошибку, и укажите, что проблема имеет отношение к Blink>Input . Для демонстрации ошибок очень хорошо подходит Glitch.
▍Поддержите нас
Планируете пользоваться API Idle Detection? Если так — расскажите об этом. Такие рассказы помогают команде разработчиков Chrome расставлять приоритеты. Эти рассказы показывают создателям других браузеров важность поддержки новых возможностей. Если хотите — поделитесь своими планами использования нового API здесь, или отправьте твит @ChromiumDev с тегом #idledetection и расскажите нам о том, где и как вы пользуетесь новым API Idle Detection.
Поиск неактивных и отключенных компьютеров/пользователей в Active Directory с помощью PowerShell
01.12.2022
itpro
Active Directory, PowerShell
комментариев 28
Довольной частой задачей, которую приходится выполнять администратору Active Directory, является формирование списка неактивных или отключенных учетных записей пользователей и/или компьютеров. Для получения списка неактивных объектов в домене Active Directory можно использовать как сохраненные LDAP запросы в консоли ADUC, так и командлеты PowerShell. В этой статье мы покажем, как использовать PowerShell для поиска неактивных учетных записей пользователей или компьютеров.
Для использование всех командлетов PowerShell, рассмотренных ниже, на компьютере должны быть установлены как минимум версия PowerShell 3.0 и набор Remote Server Administration Toolkit (RSAT), в котором должен быть включен компонент Active Directory Module for Windows PowerShell (Control Panel -> Programs-> Turn Windows Features on and off-> Remote Server Administration Tools -> Role Administration Tools -> AD DS and AD LDS Tools).

Модуль AD PowerShell также может быть включен командой:
Запустите консоль PowerShell и импортируйте модуль Active Directory в сессию:
Поиск старых (неактивных) компьютеров в домене
Для поиска неактивных компьютеров в домене можно использовать командлет Get-ADComputer. В качестве критерия поиска можно использовать атрибут LastLogonTimeStamp. Обратите внимание, что этот атрибут нельзя использовать для получения информации о времени последнего входа компьютера в домен в реальном времени. Однако благодаря тому, что этот атрибут реплицируется между DC раз в 9-14 дней, вы можете получить информацию о последнем входе компьютера в домен с любого контроллера домена (в отличии от атрибута LastLogonDate, который обновляется только на DC, через который выполнил вход компьютер).
Текущее значение атрибута LastLogonTimeStamp можно получить в свойствах компьютера в консоли ADUC на вкладке редактора атрибутов.
Чтобы найти в определенном OU все компьютеры, которые не использовались для входа в сеть более 180 дней, воспользуйтесь следующими командами:
$LastLogonDate= (Get-Date).AddDays(-180)
Get-ADComputer -Properties LastLogonTimeStamp -Filter

Эта команда сформирует текстовый CSV файл со списком неактивных компьютеров, которые не регистрировались в сети более полугода.
Вы можете отключить найденные учетные записи компьютеров:
Get-ADComputer -Properties LastLogonTimeStamp -Filter
Перенести их в отдельный OU:
Get-ADComputer . | Move-ADObject -TargetPath “OU=Disabled Computers,DC=winitpro,DC=ru”
Поиск неактивных учетных записей пользователей в Active Directory
Для поиска учетных записей неактивных пользователей также можно использовать атрибут lastLogonTimeStamp. Для построения списка неактивных учетных записей нужно использовать именно этот атрибут, а не lastLogon (последний не реплицируется между контроллерами домена).
Следующий скрипт позволит выбрать включенные (незаблокированные) учетные записи пользователей, которые не авторизовались в домене более полугода (180 дней) с помощью командлета Get-ADUser:
$LastLogonDate= (Get-Date).AddDays(-180)
Get-ADUser -Properties LastLogonTimeStamp -Filter

В целях безопасности вы можете отключить учетные записи неактивных пользователей:
Get-ADUser -Properties LastLogonTimeStamp -Filter
Если нужно удалить неактивных пользователей, используйте пайплайн с Remove-ADUser.
Search-ADAccount: командлет для поиска неиспользуемых объектов в AD
Для поиска неактивных в объектов в AD можно использовать командлеты Get-ADUser, Get-ADComputer или Get-ADObject. Однако создание правильного фильтра для этих команд может вызывать определенные затруднения. В модуле PowerShell для ActiveDirectory есть более удобный командлет для выполнения таких задач — Search-ADAccount. Этот командлет используется для поиска объектов любого типа (как пользователей, так и компьютеров). Рассмотрим примеры использования командлета Search-ADAccount для типовых задач поиска отключенных, неактивных и заблокированных объектов в AD.
Перечислим список наиболее интересных для нас ключей командлета Search-ADAccount:
К примеру, выведем список отключенных учетных записей пользователей во всем домене:
Search-ADAccount -UsersOnly –AccountDisabled
Можно ограничить область поиска определенным контейнером (OU) Active Directory так:
Search-ADAccount -UsersOnly –AccountDisabled –searchbase «OU=Admins,OU=Accounts,DC=winitpro,DC=loc»

Эти же данные можно представить в более удобном табличном виде с помощью команды:
Search-ADAccount -UsersOnly -AccountDisabled -searchbase «OU=Admins,OU=Accounts,DC=winitpro,DC=loc»|ft -AutoSize
Если вам нужно получить список отключенных пользователей, содержащий только определённые атрибуты пользователей и представить в виде графической таблицы с возможностью сортировки, выполните:
Search-ADAccount -UsersOnly -AccountDisabled |sort LastLogonDate | Select Name,LastLogonDate,DistinguishedName |out-gridview -title «Disabled Users»

Список заблокированных учетных записей пользователей:
Search-ADAccount -UsersOnly –LockedOut
Список учетных записей пользователей, неактивных в течении 60 дней:
$timespan = New-Timespan –Days 60
Search-ADAccount –UsersOnly –AccountInactive –TimeSpan $timespan | ?
Чтобы посчитать количество таких пользователей:
Search-ADAccount –UsersOnly –AccountInactive –TimeSpan $timespan | ? <$_.Enabled –eq $True>| Measure
Список компьютеров, которые не регистрировались в домене в течении последних 90 дней:
Search-ADAccount -AccountInactive –ComputersOnly -TimeSpan 90
Либо с определенной даты:
Search-ADAccount -AccountInactive -ComputersOnly -DateTime ‘1/1/2020’|Select Name,LastLogonDate| ft

Для выгрузки полученных данных в CSV файл воспользуйтесь командой:
Search-ADAccount -AccountDisabled -UsersOnly| Export-Csv «c:\ps\disabled_users.csv»
Предыдущая статья Следующая статья



alt=»проверака наличия модуля activedirectory» width=»58″ height=»56″ /> Управление группами Active Directory с помощью PowerShell
alt=»изменить настройки политики паролей в домене active directory из консоли управления gpo» width=»58″ height=»56″ />Настройка политики паролей пользователей в Active Directory
alt=»Test-PasswordQuality поиск простых и повторяющихся паролей в Active Directory» width=»58″ height=»56″ />Аудит надежности паролей пользователей в Active Directory
Search-ADAccount -AccountInactive -ComputersOnly -DateTime ‘1/1/2017’
не С такой даты, а До нее.
Это как предложение построить :). «Список компьютеров, которые не регистрировались в сети С определенной даты» = «список неактивных компьютеров ДО даты» ?
Кстати, Search-ADAccount -ComputersOnly –LockedOut выдаст перечень заблокированных хостов. Заблокированных кем?
В теории обьекты компьютер и пользователь в AD во многом похожи. Конечно, при попытке авторизации в домене компьютера с неправильном паролем (например, ПК восстановлен из старого бэкапа) не происходит его блокировка в домене, он просто теряет доверительные отношения: ошибка «Не удалось установить доверительные отношения между этой рабочей станцией и основным доменом». Чтобы восстановить членство в домене достаточно сбросить пароль компьютера так: https://winitpro.ru/index.php/2012/08/15/sbros-parolya-kompyutera-v-domene-bez-perezagruzki/
Как Ограничить область поиска «все кроме определенного контейнера»?
Как-то так (не выводить пользователей из данного OU в списке):
Search-ADAccount -UsersOnly -AccountDisabled | Where <$_.DistinguishedName -notlike "*CN=Disabled,CN=Users,DC=winitpro,DC=ru">
Не сочетаются –TimeSpan и -Searchbase для Search-ADAccount ?
Не уверен. На мой взгляд командлеты get-aduser и get-adcomputer более универсальные и гибкие.
Добрый день.
Необходимо посмотреть когда именно было отключение учетной записи.
Если речь именно о блокировке пользователя (при неправильном n-кратном пароле), смотрите время события на DC.
Приветствую!
Интерессный факт:
При выборке Search-ADAccount -AccountInactive –ComputersOnly -TimeSpan 90,180,360
попадают компы которые реально не в сети до 30 дней! Лично тестил, как такое может быть, не стыкались с таким? Как тогда наверняка проверить?
Наверно проблема связана с тем, что Search-ADAccount выполняет поиск по атрибуту lastlogontimestamp, который по умолчанию реплицируется между DC, но только если он более на 14 дней старше чем предыдущее значение (не стоит искать компьютеры, которые были в сети менее 14 дней назад).
В теории можно проверить через Get-ADComputer
$DaysInactive = 90
$time = (Get-Date).Adddays(-($DaysInactive))
Get-ADComputer -Filter
Методом тестирования получилось что Search-ADAccount и дугие командлеты PowerShell будут показывать актуальную информацию лишь в том случае, если пк ребутаются каждый день. Команды смотрят на последнее обращение к контроллеру)
Добрый день. А как можно сделать выгрузку состава группы, в которой будут отражены только отключенные УЗ?
Например, я пробовал выполнять команду:
$GROUP=»имя группы»
Get-ADGroupMember -Identity $GROUP -Recursive | Get-ADUser –Filter
но отчёт формируется из различных УЗ, которые вообще не имеют никакого отношения к некой группе; т.е. отчёт получается некорректнный/неправильный.
Внешне запрос выглядит нормально. Возможно этот эффект из-за того, что вы получаете состав пользователей из вложенных групп рекурсивно
должен быть включить компонент — включЕН
Нужен дефис перед AccountDisabled:
Search-ADAccount -UsersOnly AccountDisabled …
Каким образом лучше сообщать вам о опечатках и ошибках?
Прямо в комментах.
Спасибо, я поправил!
Нужно поправить в разделе «Список компьютеров, которые не регистрировались в домене в течении последних 90 дней», Search-ADAccount -AccountInactive –ComputersOnly -TimeSpan 90
Дату нужно взять в кавычки TimeSpan «90», иначе будет выдавать информацию за последние 14 дней.
Не забывайте, что lastlogon не реплицируется. Чтобы получить его актвальное значение, придется опросить все dc в домене:
[datetime]::FromFileTime((Get-ADDomainController -Filter * | foreach
А если поле LastLogonTimeStamp пустое?
ПК создали в АД, но не использовали. Что указывать в переменной $LastLogonDate ? (LastLogonTimeStamp -lt $LastLogonDate)
Если компьютер не входил в домен, то поле LastLogonTimeStamp будет пустым.
Windows Server 2012 r2
1 не работает скрипт для выведения списка отключённых юзаков. решил добавить Remove-ADUser и сразу их удалить, но тоже не сработало.
https://i.ibb.co/61vpCXt/1.png
https://i.ibb.co/xmX5nhR/2.png
Search-ADAccount -UsersOnly –LockedOut -Remove-ADUser
Search-ADAccount : Не удается найти параметр, соответствующий имени параметра «Remove-ADUser».
строка:1 знак:40
+ Search-ADAccount -UsersOnly -LockedOut -Remove-ADUser
+
+ CategoryInfo : InvalidArgument: (:) [Search-ADAccount], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.SearchADAccountCmdl
et
https://i.ibb.co/CWvNtG3/3.png
2 по старым юзакам, код
$LastLogonDate= (Get-Date).AddDays(-180)
Get-ADUser -Properties LastLogonTimeStamp -Filter
подогнал по себя: «dc=corp,dc=avtodor-eng,dc=ru»
Get-ADUser -Properties LastLogonTimeStamp -Filter
rchBase ‘OU=Users,dc=corp,dc=avtodor-eng,dc=ru’| ? <$_.Enabled -eq $True>| Sort LastLogonTimeStamp| FT Name, @
Get-ADUser : Объект каталога не найден
строка:1 знак:1
+ Get-ADUser -Properties LastLogonTimeStamp -Filter
+ CategoryInfo : ObjectNotFound: (:) [Get-ADUser], ADIdentityNotFoundException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,M
icrosoft.ActiveDirectory.Management.Commands.GetADUser
в начале делал так, но были жалобы:
Get-ADUser -Properties LastLogonTimeStamp -Filter
rchBase ‘OU=Users,dc=corp,dc=ru’| ? <$_.Enabled -eq $True>| Sort LastLogonTimeStamp| FT Name, @
Get-ADUser : Указанное различающееся имя должно принадлежать одному из следующих разделов: «DC=corp,DC=avtodor-eng,DC=r
u , CN=Configuration,DC=corp,DC=avtodor-eng,DC=ru , CN=Schema,CN=Configuration,DC=corp,DC=avtodor-eng,DC=ru , DC=Domain
DnsZones,DC=corp,DC=avtodor-eng,DC=ru , DC=ForestDnsZones,DC=corp,DC=avtodor-eng,DC=ru».
строка:1 знак:1
+ Get-ADUser -Properties LastLogonTimeStamp -Filter
+ CategoryInfo : InvalidArgument: (:) [Get-ADUser], ArgumentException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Comm
ands.GetADUser
как должно быть написано, чтобы отрабатывал код?
Search-ADAccount -AccountDisabled -UsersOnly | remove-aduser
вот так надо было писать
а перемещение не работает:
Search-ADAccount -AccountDisabled -UsersOnly | Move-ADObject -TargetPath “OU=Blocked_accounts,DC=corp,DC=avtodor-eng,DC=ru”
ответ:
Move-ADObject : Эта операция не может быть выполнена, т.к. родитель объекта либо не подтвержден, либо удален
строка:1 знак:48
+ Search-ADAccount -AccountDisabled -UsersOnly | Move-ADObject -TargetPath «OU=Blo …
+
+ CategoryInfo : NotSpecified: (CN=Филимонов Ал…todor-eng,DC=ru:ADAccount) [Move-ADObject], ADException
+ FullyQualifiedErrorId : ActiveDirectoryServer:8329,Microsoft.ActiveDirectory.Management.Commands.MoveADObject
Проверьте, что DN целевого OU указан правильно:
$TargetOU = «OU=Blocked_accounts,DC=corp,DC=avtodor-eng,DC=ru»
Get-AdObject $targetOU
Либо другой вариант — вы пытаетесь переместить учетные записи которые уже в целевом контейнере надо его исключить:
$OUTransfer = «OU=Blocked_accounts,DC=corp,DC=avtodor-eng,DC=ru»
Search-ADAccount -AccountDisabled -UsersOnly | Where-Object DistinguishedName -notlike «*$OUTransfer» |Move-ADObject -TargetPath $OUTransfer
Существует проблема. Учетная запись AD была создана, но пользователь использует её только для доступа к почте Exchange или только для работы с корпоративным порталом (LDAP авторизация).
Соответственно атрибут lastLogonTimeStamp не обновляется. Можно ли в таком случае как-то выявлять реально неактивных пользователей, а не тех кто не логинился с ПК?
Здесь вам поможет выгрузка времени последнего доступа к ящику exchange и сравнение двух списков:
Get-MailboxStatistics -Server Exch19 | Sort LastLogonTime -Descending