Полезные командлеты Powershell для Active Directory

Engineer

Активный участник
Предлагаю собрать здесь полезные командлеты powershell для работы с AD, которые необходимы на каждый день.
Необходимо включить поддержку модуля Active Directory в Server Manager
(Add Roles and Features -> Features -> Remote Server Administration tools -> Role Administration Tools -> AD DS and AD LDS Tools -> Active Directory module for Windows PowerShell)
Код:
Install-WindowsFeature -Name "RSAT-AD-PowerShell" –IncludeAllSubFeature
Либо просто выкачать RSAT для своей версии винды и импортировать модуль для службы каталогов:
Выполняем в powershell
Код:
import-module activedirectory

Создание пользователя в Active Directory через powershell

Код:
New-ADUser -Name "Ivan Ivanov" -GivenName "Ivan" -Surname "Ivanov" -SamAccountName "iivanov" -UserPrincipalName "iivanov@contoso.com " -Path "OU=Users,OU=Orenburg,DC=contoso,DC=com" -AccountPassword(Read-Host -AsSecureString "Password") -Enabled $true
 
Последнее редактирование:
Получение справочной информации по командлету, например
Код:
c:\> get-help set-aduser -detailed
c:\> get-help get-aduser –examples
Если вы выполняете это первый раз то будут установлены компоненты справки, нужно будет подождать
ad.png - active directory manual
 
Создание нового пользователя в Active Directory средствами PowerShell
Код:
C:\> New-ADUser –Name "John Smith" –SamAccountName JohnS –DisplayName "John Smith" –Title "Account Manager" –Enabled $true –ChangePasswordAtLogon $true -AccountPassword (ConvertTo-SecureString "[FONT=Open Sans][SIZE=13px]password[/SIZE][/FONT]" -AsPlainText -force) -PassThru
Создание новой группы в Active Directory средствами PowerShell
Код:
C:\> New-ADGroup -Name "Account Managers" -SamAccountName AcctMgrs -GroupScope Global -GroupCategory Security -Description "Account Managers Group" –PassThru
Создание нового подразделения (OU) в Active Directory
Код:
C:\> New-ADOrganizationalUnit -Name Buhgalteriya -ProtectedFromAccidentalDeletion $true  -PassThru
 
Последнее редактирование модератором:
Поиск всех пользователей в Active Directory начинающихся с имени Иван
Код:
C:\> Get-ADUser -Filter { name –like "Иван*" }
 
Добавить пользователя в группу через Powershell
Код:
C:\> Add-ADGroupMember -Identity AcctMgrs -Members Иван

Посмотреть кто входит в группу VIPs
Код:
C:\> Get-ADGroupMember -Identity VIPs
Посмотреть список групп в которые входит пользователь Иван
Код:
C:\> Get-ADPrincipalGroupMembership -Identity Иван
 
Разблокировать учетную запись
Код:
C:\> Unlock-ADAccount -Identity Иван
 
Получение всех контроллеров домена в лесу Active Directory
Код:
Get-ADDomainController -Filter { name -like "*" }
Тоже но с форматированием:
Код:
Get-ADDomainController –filter * | select hostname,IPv4Address,IsGlobalCatalog,IsReadOnly,OperatingSystem | format-table –auto
 
Последнее редактирование модератором:
Сброс пароля пользователя через Powershell

Код:
Set-ADAccountPassword ivanov -Reset -NewPassword (ConvertTo-SecureString -AsPlainText “NewPassWord” -Force -Verbose) –PassThru
 
Поиск неактивных учетных записей компьютеров в Active Directory, которые не регистрировались более 60 дней
Код:
$timespan = New-Timespan –Days 60
Search-ADAccount -AccountInactive -ComputersOnly –TimeSpan $timespan | Disable-ADAccount
 
Проверка репликации Active Directory через Powershell
Код:
Get-ADReplicationFailure -Target PDC01,PDC02
 
Поиск пустых групп безопасности в Active Directory
Код:
C:\> get-adgroup -filter * | where {-Not ($_ | get-adgroupmember)} | Select Name

Advanced вариант
Код:
[/B]C:\> get-adgroup -filter "members -notlike '*' -AND GroupScope -eq 'Universal'" -SearchBase "OU=Groups,OU=Employees,DC=Globomantics, DC=local" | Select Name,Group*[B]
 
Поиск компьютеров по типу операционной системы
Код:
C:\> Get-ADComputer -Filter * -Properties OperatingSystem | Select OperatingSystem -unique | Sort OperatingSystem
Например поиск серверной винды
Код:
C:\> Get-ADComputer -Filter "OperatingSystem -like '*Server*'" -properties OperatingSystem,OperatingSystem ServicePack | Select Name,Op* | format-list
 
откуда то с хабра
Отчет о возрасте паролей юзеров в html файле

Код:
C:\> Get-ADUser -Filter "Enabled -eq 'True' -AND PasswordNeverExpires -eq 'False'" -Properties PasswordLastSet,PasswordNeverExpires,PasswordExpired | Select DistinguishedName,Name,pass*,@{Name="PasswordAge"; Expression={(Get-Date)-$_.PasswordLastSet}} |sort PasswordAge -Descending | ConvertTo-Html -Title "Password Age Report" | Out-File c:\Work\pwage.htm
 
Добавить компьютер в домен
Код:
 Add-Computer -DomainName "domain.com" -Credential Domain\Username -Restart -Force

Поиск отключенных учетных записей через powershell
Код:
 Search-ADAccount -AccountDisabled | FT Name,ObjectClass
 
PowerShell умеет сбрасывать пароль компьютера и восстанавливать безопасное соединение с доменом.
Для сброса учетной записи компьютера и защищенного канала можно использовать командлет Test-ComputerSecureChannel

Восстановление доверительных отношений в домене
Код:
Test-ComputerSecureChannel -Server "controller.domain.com"
Еще пример
Код:
Test-ComputerSecureChannel -Server SRV7 -Credential Contoso\Administrator -Repair

Для сброса учетной записи компьютера и защищенного канала можно использовать такую команду:

Код:
Test-ComputerSecureChannel -Server SRV7 -Credential Contoso\Administrator -Repair
где SRV7 — контролер домена
 
Последнее редактирование:
Командлет который возвращает наследование групповых политик
Код:
Get-GPInheritance -target «ou=MyOU,dc=contoso,dc=com»
Предварительно необходимо импортировать модуль в powershell
Код:
import-module grouppolicy
 
Найти отключенные учетные записи
Get-ADUser -Properties LastLogonTimeStamp -Filter * -SearchBase ‘OU=Users,OU=OFFICE,DC=DOMEN,DC=local’| ?{$.Enabled –eq $False} | Sort LastLogonTimeStamp | ft Name, @{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($.lastlogontimestamp)}}
 
Посмотреть кто в группе
Get-AdGroupMember GROUPNAME | Select Name, SamAccountName | Sort-Object Name
 
Список пользователей в группе и экспортом в файл
Get-ADGroupMember -Recursive GROUPNAME | ForEach {Get-ADUser -filter {samaccountname -eq $_.SamAccountName} -Properties Name, Department, title, extensionAttribute1, mobile} | Export-CSV -Path c:\TEMP\file.csv -NoTypeInformation -Delimiter ";"
 
Поиск любого атрибута в AD , например поиск proxy адреса в Exchange:cool:
Get-AdUser -Filter * -Properties Name, proxyAddresses | where {$_.proxyAddresses -like '*ivano*'}
 
Назад
Верх