Профили
У каждого пользователя Powershell есть свой профиль. Профиль выглядит как обычный файл со скриптом формата ps1. Открывая консоль Powershell вы автоматически запускаете этот файл и все значения, перечисленные в файле профиля, становятся видимыми для вас. Кроме этого профиль не ограничивается одним пользователем и может использоваться для всех.
Создание
Каждый профиль пользователя хранится в файле «.ps1» и путь до него можно посмотреть используя встроенную переменную:
Вы можете открыть этот файл и вписать в него любую команду. Я использую команду, которая проверит соединение с DNS сервером Google:
Теперь, каждый запуск консоли будет выводить следующее, дополнительное, сообщение:
Отмечу, что это не самый удачный пример т.к. эта команда занимает существенное время на выполнение. Вы вряд ли захотите ждать 4-5 секунд для запуска консоли.
Вам может не будет требоваться отображать подобный результат при каждом запуске. Вы можете поместить эти данные в переменную и затем вызывать ее по мере работы в консоли:
Самый быстрый вариант, при котором вам не нужно будет дожидаться загрузки, это создание функции совмещающей все ваши базовые задачи. Она будет вызываться только при обращении к ней:
Типы профилей
Если посмотреть содержание переменной $Profile более детально, то мы увидим 4 типа профилей:
В выведенной информации можно увидеть понятие ‘host’. Под «хостом» подразумевается программа, которая хостит Powershell. Это может быть стандартная консоль, редактор ISE, VisualStudio и т.д.
Мы так же увидим следующие профили:
- AllUsersAllHosts — профиль для всех пользователей и для всех хостов;
- AllUsersCurrentHost — профиль для всех пользователей и только для текущего хоста;
- CurrentUserAllHosts — профиль для текущего пользователя и для всех хостов;
- CurrentUserCurrentHost — профиль для текущего пользователя и только для этого хоста.
Указанный путь — это место, где уже есть или может быть создан файл. При каждом запуске Powershell проверяет эти пути и читает данные.
Наиболее просто будет понять разницу работы профилей на примере. В каждый файл профиля я поместил команду соответствующую его названию:
Запуск средства разработки Powershell ISE и обычной консоли был следующий:
Как видно, в ISE, отображаются не все профили. Связано это с тем, что консоль Powershell и редактор ISE — это разные хосты. Мы можем увидеть немного отличающиеся профили если запустить эту команду в ISE:
Так же вы можете увидеть дополнительные профили если используете Powershell Core 6/7, VisualStudio и т.д..
Профиль при удаленном подключении
Прямых способов использования профилей при удаленном подключении нет. Есть косвенный способ, который заключается в возможности использования файлов со скриптами в команде «Invoke-Command». Следующий пример демонстрирует такую возможность:
На самом деле эта команда выглядит следующим образом:
Вам так же будет интересно:
Install RSAT (Remote Server Administration Tools)
Before we begin, you should first be aware of the RSAT package. If you are using a workstation variant of Windows then you will need to install the Remote Server Administration Tools (RSAT) package. When using a Server variant of Windows, RSAT is available already.
Without RSAT you’ll get the annoying ‘the term Get-AD* is not recognized as the name of a cmdlet, function, script file, or operable program’ type messages when you attempt to run the commands we’ll be covering.
RSAT for Pre 1809 Windows 10
Download an RSAT package if you’re on Windows 10 pre-build 1809 from Microsoft. The install is simple and straightforward.
Once you have installed RSAT, ensure the Active Directory Module for Windows PowerShell is enabled in Windows Features. By default, it should be already.
Enabling the Active Directory Module for Windows PowerShell
RSAT for post-1809 Windows 10
In versions of Windows from 1809 onwards the RSAT capabilities are available as optional features. There’s no need to download an external packages.
To install the ActiveDirectory module on Windows 10 post-1809, use the cmdlet. This enables the Rsat.ActiveDirectory.DS-LDS.Tools optional feature as shown below.
RSAT for Windows Server 2008R2 and Later
On Windows Server, use the PowerShell ServerManager module to enable the RSAT-AD-PowerShell feature in PowerShell.
MSOnline Public Preview module
The MSOnline Public Preview release 1.1.130.0 is no longer available for download. If you are looking for the MSOL-Settings cmdlets to manage groups settings for Unified Groups, these are now available in the newer Azure AD PowerShell V2 Public Preview module, which can be found in the Powershell Gallery for the Azure AD Preview module. You can install this module with the cmdlet
Note that the MSOL Settings cmdlets have been given a new name, more information about these cmdlets and how to use them can be found in this article.
Important
Effective October 20, 2014, the Azure Active Directory Module for Windows PowerShell (32-bit version) is discontinued.
Support for the 32-bit version will no longer occur, and future updates to the Azure Active Directory Module will be released only for the 64-bit version.
We strongly recommend you install the 64-bit version to ensure future support and compatibility.
You can also access previous versions of the Azure AD module from the Microsoft Azure Active Directory PowerShell Module Version Release History on the TechNet Wiki.
Как включить и отключить учетную запись пользователя в Active Directory
Когда вы хотите убрать возможность логина в AD для учетной записи пользователя, вы можете отключить ее. В том случае если объект пользователя отключен, но он вам снова нужен по какой-то причине, например, сотрудник вернулся из декретного отпуска, вы можете включить его снова. Вот руководство, как это сделать несколькими способами.
Включение и отключение УЗ пользователя с помощью Active Directory Users and Computers
Чтобы включить или отключить пользователя с помощью ADUC, сделайте следующее:
Войдите в Active Directory Users and Computers (dsa.msc). Найдите OU или контейнер, где содержится нужный вам аккаунт, щелкните правой кнопкой по OU и выберите «Find…». В поле «Name» введите имя объекта и нажмите кнопку Find Now. В поле «Search» щелкните правой кнопкой мыши на юзера и выберите Enable account для включения УЗ или Disable account для ее отключения в зависимости от того, что вам нужно, и нажмите OK.
Включение и отключение аккаунта пользователя с помощью cmd.exe
Это задача для dsmod.exe, для включения учетной записи используйте его со следующими параметрами:
А эта команда отключит учетную запись:
Включение и отключение учетной записи пользователя с помощью Windows PowerShell
Ниже приведен код PowerShell для включения учетной записи пользователя:
А эта предназначена для отключения учетной записи пользователя:
Conclusion ^
Using the Active Directory module has become simpler with each PowerShell version up to Microsoft’s release of PowerShell Core 6.0. However, working with implicit remoting and remote sessions has various advantages. One advantage is that you can use disconnected remote sessions. This allows you to start a script, shut down your client computer, and retrieve the results from the remote machine later. If you often work with remote sessions, you should become familiar with the different ways you can use PowerShell remote sessions. Once you get used to working with remoting, you probably won’t miss the local AD module for PowerShell Core.
Скрипт PowerShell для проверки доступности всех контроллеров домена
Следующий скрипт PowerShell позволяет поочерёдно проверять контроллеры домена и выполнять для каждого из них определённые действия:
$DCs = Get-ADDomainController -Filter * ForEach-Object($DC in $DCs) { действия }
Вот пример простого скрипта PowerShell, который проверяет доступность порта LDAPS (TCP 636) на каждом контроллере домена в вашем домене с помощью командлета Test-NetConnection. Если порт LDAPS недоступен, появится предупреждение.
$DCs = Get-ADDomainController -Filter * | Select-Object Hostname,Ipv4address,isGlobalCatalog,Site,Forest,OperatingSystem ForEach($DC in $DCs) { $PortResult=Test-NetConnection -ComputerName $DC.Hostname -Port 636 -InformationLevel Quiet if ($PortResult -ne "$True"){ write-host $DC.Hostname " не доступен" -BackgroundColor Red -ForegroundColor White }else { write-host $DC.Hostname " доступен" -BackgroundColor Green -ForegroundColor White} }
Получился простой скрипт для отслеживания доступности всех контроллеров домена в вашем домене.
Также существуют разные сценарии для проверки всех контроллеров домена по очереди.
Установка модуля Active Directory для Windows PowerShell
По умолчанию в системе установлены не все модули Windows PowerShell, некоторые из них добавляются во время установки соответствующей роли или компонента. Например, если Ваш сервер не является контроллером домена, соответствующего модуля PowerShell (RSAT-AD-PowerShell) для администрирования Active Directory в нем нет, т.е. использовать командлеты PowerShell для управления AD Вы не сможете. Однако Вы можете установить модуль PowerShell для работы с Active Directory. Именно это мы сейчас и рассмотрим, при этом я покажу два варианта установки модуля RSAT-AD-PowerShell — это с помощью «Мастера добавления ролей и компонентов», т.е. используя графический интерфейс и, конечно же, с помощью Windows PowerShell.
Процесс установки модуля Active Directory для Windows PowerShell такой же, как и установка остальных компонентов и средств удаленного администрирования в Windows Server 2016, поэтому если Вы умеете устанавливать роли или компоненты сервера, то с установкой RSAT-AD-PowerShell Вы легко справитесь.
Запускаем «Диспетчер серверов» и нажимаем «Управление ->Добавить роли или компоненты».
На первом окне можем сразу нажать «Далее».
Шаг 3
Далее выбираем тип установки, мы хотим установить компонент, поэтому выбираем первый пункт «Установка ролей или компонентов», жмем «Далее».
Затем выбираем сервер, на который будут установлены роли и компоненты, жмем «Далее».
Шаг 5
На этом шаге нам предлагают выбрать роли для установки, а так как мы не собираемся устанавливать роли, сразу жмем «Далее».
Шаг 6
На шаге выбора компонентов мы ищем пункт «Средства удаленного администрирования сервера -> Средства администрирования ролей -> Средства AD DS и AD LDS -> Модуль Active Directory для Windows PowerShell» и отмечаем его галочкой, жмем «Далее».
Шаг 7
Проверяем выбор компонентов и жмем «Установить».
Начнется процесс установки модуля Active Directory для Windows PowerShell.
Он будет завершен, когда мы увидим сообщение «Установка выполнена на …», нажимаем «Закрыть».
Установка модуля RSAT-AD-PowerShell с помощью PowerShell
Если Вы не хотите щелкать мышкой по окошкам мастера, то Вы можете легко выполнить процедуру установки компонентов с помощью нашего любимого Windows PowerShell, кстати, таким способом это делается, на мой взгляд, гораздо проще и быстрей.
Для установки модуля Active Directory для Windows PowerShell запустите оболочку PowerShell и выполните следующие команды (вместо командлета Add-WindowsFeature можно использовать Install-WindowsFeature).
Import-Module ServerManager Add-WindowsFeature -Name "RSAT-AD-PowerShell" –IncludeAllSubFeature
Смотрим список командлетов PowerShell для работы с Active Directory
Для того чтобы проверить, что у нас установился необходимый модуль PowerShell давайте, выполним команды, которые покажут нам количество командлетов для работы с Active Directory и сам список этих командлетов.
Чтобы узнать, сколько у нас командлетов для администрирования Active Directory пишем вот такую команду
Get-Command -Module ActiveDirectory | Measure-Object
А для того чтобы посмотреть полный перечень командлетов пишем следующую команду, т.е. результат работы Get-Command мы не передаем по конвейеру командлету Measure-Object.
Get-Command -Module ActiveDirectory
Мы видим, что нас появилось 147 командлетов для работы с Active Directory, которые мы теперь можем использовать для администрирования AD.
На этом все, надеюсь, материал был Вам полезен, удачи!
Нравится2Не нравится
Примеры использования Get-ADUser
Давайте покажем ещё несколько полезных примеров команд для запросов пользователей Active Directory с помощью различных фильтров. Вы можете объединить их, чтобы получить необходимый список пользовательских объектов AD:
Отобразить пользователей AD, имя которых начинается с Joe:
Get-ADUser -Filter {name -like "Joe*"}
Вы можете использовать PowerShell для расчёта общего количества учётных записей пользователей в Active Directory:
Get-ADUser -Filter {SamAccountName -like "*"} | Measure-Object
Вывод списка пользователей и их свойств, размещённых в определённом организационном подразделении (контейнере) в данном случае это OU=Finance,OU=UserAccounts,DC=FABRIKAM,DC=COM:
Get-ADUser -Filter * -SearchBase "OU=Finance,OU=UserAccounts,DC=FABRIKAM,DC=COM"
Найти отключённые учётные записи пользователей Active Directory:
Get-ADUser -Filter {Enabled -eq "False"} | Select-Object SamAccountName,Name,Surname,GivenName | Format-Table
Вы можете проверить дату создания учётной записи пользователя Active Directory с помощью команды:
Get-ADUser -Filter * -Properties Name,WhenCreated | Select name,whenCreated
Вы можете получить список недавно добавленных пользователей Active Directory, созданных за последние 24 часа:
$lastday = ((Get-Date).AddDays(-1)) Get-ADUser -filter {(whencreated -ge $lastday)}
Вывести список учётных записей с просроченным паролем (вы можете настроить параметры истечения срока действия пароля в политике паролей домена):
Get-ADUser -Filter {Enabled -eq $True} -Properties name,passwordExpired | Where-Object {$_.PasswordExpired}| Select-Object name,passwordexpired
Командлеты Get-ADUser и Add-ADGroupMember можно использовать для создания динамических групп пользователей AD (в зависимости от города, должности, отдела и прочего).
Задача: для списка учётных записей, которые хранятся в текстовом файле (по одной учётной записи в строке), вам необходимо получить название компании пользователя из AD и сохранить его в файл CSV (вы можете легко импортировать этот файл в Excel).
Import-Csv c:\ps\users_list.csv | ForEach { Get-ADUser -Identity $_.user -Properties Name,Company | Select-Object Name,Company | Export-CSV c:\ps\users_ad_list.csv -Append -Encoding UTF8 }
Пользователи, которые не меняли свои пароли в течение последних 90 дней:
$90_Days = (Get-Date).adddays(-90) Get-ADUser -Filter {(passwordlastset -le $90_days)}
Чтобы получить фотографию пользователя из Active Directory и сохранить её в файле jpg, выполните следующие команды:
$usr = Get-ADUser sjoe -Properties thumbnailPhoto $usr.thumbnailPhoto | Set-Content sjoe.jpg -Encoding byte
Чтобы получить список групп AD, членом которых является учётная запись пользователя:
Get-AdUser MiAl -Properties memberof | Select-Object memberof -ExpandProperty memberof
Перечислить пользователей из OU, которые являются членами определённой группы безопасности домена:
Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=hackware,DC=ru' -Filter * -Properties memberof | Where-Object {($_.memberof -like "*CEO*")}
Перечислить компьютеры домена, на которых пользователю разрешён вход.
Get-ADUser MiAl -Properties LogonWorkstations | Format-List Name,LogonWorkstations
Чтобы искать компьютеры и фильтровать компьютеры по их свойствам в Active Directory, вы можете использовать другой командлет – Get-ADComputer.
Примеры использования Get-ADDomainController
Чтобы получить контроллер домена с помощью механизма обнаружения DCLocator, используйте опцию -Discover. Вы можете указать критерии поиска, задав такие опции, как -Service, -SiteName, -DomainName, -NextClosestSite, -AvoidSelf и -ForceDiscover.
Также вы можете найти контроллер домена, которому должен принадлежать ваш компьютер, через службу -DCLocator:
Get-ADDomainController -Discover
Следующая команда получит один доступный контроллер домена на указанном сайте:
Get-ADDomainController -Discover -Site "Default-First-Site-Name"
Опция -ForceDiscover указывает командлету очистить всю кэшированную информацию о контроллере домена и выполнить новое обнаружение. Если этот параметр не указан, командлет может возвращать кэшированные сведения о контроллере домена.
Get-ADDomainController -Discover -Site "Default-First-Site-Name" -ForceDiscover
Эта команда получает один доступный контроллер указанного домена в данном домене с помощью обнаружения.
Get-ADDomainController -Discover -Domain "user01.com"
Вы можете найти ближайший доступный контроллер домена с активной ролью веб-служб AD:
Get-ADDomainController -ForceDiscover -Discover -Service ADWS
Опция -Service задаёт типы получаемых контроллеров домена. Вы можете указать более одного типа, используя список, разделённый запятыми. Допустимые значения для этого параметра:
- PrimaryDC или 1
- GlobalCatalog или 2
- KDC или 3
- TimeService или 4
- ReliableTimeService или 5
- ADWS или 6
Пример использования опции -Service для поиска PDC (Primary Domain Controller Emulator) в вашем домене:
Get-ADDomainController -Discover -Service PrimaryDC
Эта команда ищет компьютер с функцией Глобального каталога в текущем лесу:
Get-ADDomainController -Discover -Service "GlobalCatalog"
Эта команда получает основной контроллер домена с помощью обнаружения и проверяет, используется ли он в качестве сервера времени.
Get-ADDomainController -Discover -Domain "corp.contoso.com" -Service "PrimaryDC","TimeService"
Если ваш контроллер домена не найден или не отвечает, вы можете найти его на ближайшем сайте AD (определяется весом межсайтовых ссылок):
Get-ADDomainController -Discover -ForceDiscover -NextClosestSite
Чтобы найти и получить более одного контроллера домена, используйте опцию -Filter.
Чтобы отобразить список всех контроллеров домена в текущем домене, выполните такую команду:
Get-ADDomainController -Filter * | Format-Table
Используя следующую команду, вы можете подсчитать количество контроллеров домена в AD:
Get-ADDomainController -Filter * | Measure-Object
Вы можете отобразить более удобную таблицу, в которой показаны все контроллеры домена, их имена хостов, IP-адреса, версии ОС и имена сайтов AD:
Get-ADDomainController -Filter *| Select-Object Name,ipv4Address,OperatingSystem,site | Sort-Object name
Если вы хотите получить некоторую информацию о DC из другого домена, укажите имя любого доступного DC в другом домене с помощью параметра -Server (это возможно в случае включения доверительных отношений между доменами).
Get-ADDomainController -Filter * -Server dc01.test.com | Select Name,ipv4Address, IsGlobalCatalog,Site
Процесс импорта
При импорте модуля для модуля создается новое состояние сеанса, а в памяти создается объект System. Management. Automation. PSModuleInfo . Состояние сеанса создается для каждого импортируемого модуля (включая корневой модуль и все вложенные модули). Элементы, экспортированные из корневого модуля, включая все элементы, экспортированные в корневой модуль любыми вложенными модулями, затем импортируются в состояние сеанса вызывающего.
Метаданные элементов, экспортированных из модуля, имеют свойство ModuleName. Это свойство заполняется именем модуля, в котором они были экспортированы.
Предупреждение
Если имя экспортированного элемента использует неутвержденную команду или если имя члена использует ограниченные символы, то при выполнении командлета Import-Module отображается предупреждение.
По умолчанию командлет Import-Module не возвращает ни одного объекта в конвейер. Однако командлет поддерживает параметр PassThru , который можно использовать для возврата объекта System. Management. Automation. PSModuleInfo для каждого импортируемого модуля. Для отправки выходных данных на узел Пользователи должны запустить командлет Write-Host .
Использование Get-ADDomainController для поиска контроллеров домена по определенным критериям
Давайте рассмотрим несколько полезных команд, которые вы можете использовать для получения списка контроллеров домена в AD по определенным критериям.
Опция -Identity указывает контроллер домена, который нужно получить. Вы можете идентифицировать контроллер домена по его GUID, IPV4Address, глобальному IPV6Address или имени узла DNS.
Чтобы найти контроллер домена по его IP-адресу:
Get-ADDomainController -Identity "192.168.100.6"
Эта команда получает контроллер домена, используя его NetBIOS имя.
Get-ADDomainController -Identity "PDC-01"
Эта команда получает контроллер домена, используя его имя хоста DNS, в домене, указанном параметром -Site, указанным в параметре -Server, и с указанием учётных данных администратора.
Get-ADDomainController -Identity "TK5-CORP-DC-10.user01.com" -Server "user01.com" -Credential "corp\administrator"
Чтобы найти все контроллеры домена, в именах которых есть DC02:
Get-ADDomainController -Filter {name -like "*dc02*"} | Select Name,ipv4Address,OperatingSystem,site
Чтобы отобразить список контроллеров домена на сайтах, имена которых начинаются с «Mun*»:
Get-ADDomainController -Filter {site -like "Mun*"} | Select Name,ipv4Address,OperatingSystem,site
Чтобы отобразить список всех контроллеров домена только для чтения (RODC):
Get-ADDomainController -Filter {IsReadOnly -eq $true} | Select-Object Name,ipv4Address,OperatingSystem,site
Чтобы найти контроллеры домена на сайте «Rome» с включённой ролью глобального каталога:
Get-ADDomainController -Filter {site -eq "Rome" -and IsGlobalCatalog -eq $true} | Select-Object Name,ipv4Address,OperatingSystem,site
Получение списка пользователей чей срок действия пароля истек в Powershell
Для того что бы увидеть все свойства относящиеся к паролям выполните:
И затем, по этому свойству, отфильтруем пользователей:
Одной из стандартных процедур проведения аудита ITGC для каталога Active Directory является получение выгрузки всех пользователей домена. На основании полученных данных далее формируются процедуры тестирования, к примеру изучение списка администраторов или выявление пользователей с истекшим паролем. Наиболее эффективным для формирования такой выгрузки будет использование стандартного интерфейса PowerShell , примеры которого мы и рассмотрим в данной статье
Ниже представлен скрипт PowerShell, как один из наиболее простых и быстрых способов получить список всех пользователей домена AD в формате CSV, который без проблем открывается тем же Excel’ем.
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = «LDAP://ou=Users,ou=Departmets,dc=test,dc=ru» $objSearcher.Filter = «(&(objectCategory=person)(!userAccountControl:1.2.840.113556.1.4.803:=2))» $users = $objSearcher.FindAll() # Количество учетных записей $users.Count $users | ForEach-Object < $user = $_.Properties New-Object PsObject -Property @< Должность = $user.description Отдел = $user.department Логин = $user.userprincipalname Телефон = $user.telephonenumber Комната = $user.physicaldeliveryofficename ФИО = $user.cn >> | Export-Csv -NoClobber -Encoding utf8 -Path С: list_domen_users.csv
Чтобы вывести полную информации обо всех доступных атрибутах пользователя tuser, выполним команду
Get-ADUser -identity tuser -properties *
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | where <$_.name –like “*Dmitry*”>| sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:tempuser-password-expires-2015.csv
Get-ADUser это один из основных командлетов PowerShell, который можно использовать для получения различной информации о пользователях Active Directory и их атрибутах. С помощью командлета Get-ADUser можно получить значение любого атрибута учетной записи пользователя AD, вывести список пользователей в домене с нужными атрибутами и экспортировать их в CSV, и использовать различные критерии для выборки доменных пользователей.
Комадлет Get-ADUser доступен начиная с PowerShell 2.0 и входит в специальный модуль для работы с Active Directory — Active Directory Module for Windows PowerShell (представлен в Windows Server 2008 R2). Командлеты модуля RSAT-AD-PowerShell позволяют выполнять различные операции с объектами каталога AD.
В этом примере мы покажем, как с помощью командлета PowerShell Get-ADUser получить информацию о времени последней смены пароля пользователя, дате истекает срока действия пароля и другие данные пользователей.
Фильтрация вывода
У нас есть базовые свойства, которые фильтруются с помощью Filter. Это:
- DistinguishedName
- Enabled
- ObjectClass
- ObjectGUID
- SamAccountName
- SID
- UserPrincipalName
И ряд свойств, которые возвращаются с параметром Properties. Их можно фильтровать через дополнительные условия (конвейер, where-object, циклы). Имена этих свойств можно вернуть так:
Использование Filter
Если вы планируете получить информацию по определенному доменному компьютеру, то вам нужно добавить условие. В примере ниже я возвращаю информацию только по компьютеру у которого имя равно «AD1»:
Если нужно найти только компьютеры, которые содержат в имени определенные значения, то нужно использовать -like вместо -eq . В моем примере я ищу все компьютеры содержащие в имени «CL» (регистр не учитывается).
Знаки * говорят, что в этих местах может быть еще текст. Такое написание «C*L» соответствовало бы логике: строка начинается с буквы «C», затем может быть еще текст завершающийся на «L».
Использование Properties
Свойства возвращаемые через ключ Properties можно фильтровать двумя способами.
Первый — указывать их явно. Например вы хотите вернуть список с датами создания учетных записей компьютеров домена, которые хранит свойство «Created». Это можно сделать так:
Указать больше свойств можно через запятую. Например:
Так же можно фильтровать через команду where-object. На примере ниже я получаю компьютеры со всеми свойствами, но созданные до 31 декабря 2019 года:
Ограничить вывод определенными свойствами можно через Select:
Получение включенных и отключенных учетных записей
Используя свойства Enabled можно вернуть учетные записи активных и деактивированных записей. Так будут возвращены отключенные учетные записи: