Пользователи
Получить список пользователей
Get-ADUser -filter * Get-ADUser –Identity a.ivanov Get-ADUser –Identity "CN=Andrey A. Ivanov,OU=Users,OU=SPB,OU=RU,DC=winitpro,DC=loc" Get-ADUser –Identity "Andrey A. Ivanov" Get-ADUSer –Server DC01.winitpro.loc –Identity tstuser
Список пользователей из AD с организационным подразделением (Organization Unit или OU).
get-aduser -filter * -SearchBase ou=ou1,ou=ou2,dc=domain,dc=ru" -Properties cn,canonicalname | select name,userprincipalname,@{Name="OU";expression={$_.Canonicalname.substring(0,$_.canonicalname.length-$_.cn.length)}}
Вариант с использование .Net
Add-Type -AssemblyName System.DirectoryServices.Protocols -ErrorAction Stop Add-Type -AssemblyName System.Net -ErrorAction Stop $Credential = Get-Credential # В виде: mydomain\myuser $ldapIdentifier = New-Object -TypeName System.DirectoryServices.Protocols.LdapDirectoryIdentifier -ArgumentList "ldap.mydomain.ru", "636" $ldap = New-Object -TypeName System.DirectoryServices.Protocols.LdapConnection -ArgumentList $ldapIdentifier, ($Credential.GetNetworkCredential()) $ldap.AuthType = [System.DirectoryServices.Protocols.AuthType]::Basic $ldap.SessionOptions.SecureSocketLayer = $true $ldap.SessionOptions.VerifyServerCertificate = { $true } $attributes = ,"*" $rootSerach = "DC=mydomain,dc=ru" $LDAP_filter = "(&(objectCategory=user)(objectClass=user)(SamAccountName=myuser))" $SearchScope = 2 # SearchScope Enum, 2 = Subtree $request = New-Object -TypeName System.DirectoryServices.Protocols.SearchRequest($rootSerach,$LDAP_filter,$SearchScope,$attributes); $result = $ldap.SendRequest($request) $result.Entries[0]
Добавить пользователя
Удалить пользователя
Изменить аттрибуты
Get-ADUser -identity tuser -Properties * Get-ADUser -Properties * - вывести список всех атрибутов и значения доменного пользователя Get-ADUser tuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires, lastlogontimestamp Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires Get-ADUser -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires
Изменить пароль
Получить информацию о смене пароля пользователем за последние 15 минут. Можно настроить отправку письма пользователями и запускать скрипт ниже каждые 15 минут.
$PasswordOlderThan = (get-date).AddMinutes(-15) Get-ADUser -Properties PasswordLastSet -Filter 'PasswordLastSet -gt $PasswordOlderThan' | Select-Object Name,PasswordLastSet
Заблокировать пользователя
$TestAccounts="test01","test02" #Узнать состояние учётных записей $TestAccounts | get-aduser | ft name,samaccountname,enabled #Заблокировать $TestAccounts | Disable-ADAccount #Разблокировать $TestAccounts | enable-ADAccount
Выборка пользователей в OU
$cred = Get-Credential Get-ADUSer tstuser -Server DC01.newdomain.ru -Credential $Cred $OUs = "OU=Moscow,DC=winitpro,DC=local","OU=SPB,DC=winitpro,DC=loc" $OUs | foreach {Get-ADUser -SearchBase $_ -Filter * |select Name, Enabled}
Get-ADUser -filter * -properties EmailAddress -SearchBase ‘OU=MSK,DC=winitpro,DC=loc’| select-object Name, EmailAddress Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Format-Table Get-ADUser -Filter * -Properties EmailAddress | where -Property EmailAddress -eq $null Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $env:temp\mail_list.csv Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:\temp\users.txt Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | select Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:\temp\user-password-expires-2019.csv -Append -Encoding UTF8 Get-AdUser -Filter "(Name -like '*Dmitry*') -and (Enabled -eq 'True')" -Properties * |select name,enabled Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’| where {$_.name –like “*Dmitry*” -and $_.Enabled -eq $true} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires Get-ADUser -Filter {anr -eq ‘Oleg’} | select Name Get-ADUser -LDAPFilter '(&(department=it)(title=devops))' Get-ADUser -filter {name -like "Roman*"} Get-ADUser -Filter {SamAccountName -like "*"} | Measure-Object Get-ADUser -Filter {Enabled -eq "True"} | Select-Object SamAccountName,Name,Surname,GivenName | Format-Table get-aduser -Filter * -Properties Name, WhenCreated | Select name, whenCreated $lastday = ((Get-Date).AddDays(-1)) Get-ADUser -filter {(whencreated -ge $lastday)} Get-ADUser -filter {Enabled -eq $True} -properties name,passwordExpired | where {$_.PasswordExpired}|select name,passwordexpired Import-Csv c:\ps\usernsme_list.csv | ForEach { Get-ADUser -identity $_.user -Properties Name, telephoneNumber | Select Name, telephoneNumber | Export-CSV c:\ps\export_ad_list.csv -Append -Encoding UTF8 } $90_Days = (Get-Date).adddays(-90) Get-ADUser -filter {(passwordlastset -le $90_days)} $LastLogonDate= (Get-Date).AddDays(-180) Get-ADUser -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate } | ?{$_.Enabled –eq $True} | Sort LastLogonTimeStamp| FT Name, @{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}} -AutoSize $user = Get-ADUser winadmin -Properties thumbnailPhoto $user.thumbnailPhoto | Set-Content winadmin.jpg -Encoding byte Get-AdUser winadmin -Properties memberof | Select memberof -expandproperty memberof Get-ADUser -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -Filter * -properties memberof | Where-Object {($_.memberof -like “*WKS admins*”)} $Users = Get-ADUser -filter * -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -properties memberOf ForEach ($User In $Users) { $Groups = -join @($User.memberOf) If ($Groups -notlike '*Domain Admins*') { $User.Name } } get-aduser -filter * -Properties cn,canonicalname | select name,userprincipalname,@{Name="OU";expression={$_.Canonicalname.substring(0,$_.canonicalname.length-$_.cn.length)}}| Out-GridView get-aduser экспорт списка пользоватетелей Active Directoryв таблицу out-gridview $SamAccountName='a.ivanov2' if (@(Get-ADUser -Filter { SamAccountName -eq $SamAccountName }).Count -eq 0) { Write-Host "Пользователь $SamAccountName не существует"} Get-ADUser AIvanov -Properties LogonWorkstations | Format-List Name, LogonWorkstations