diff --git a/posh.txt b/posh.txt index e968bd5..8d393b9 100644 --- a/posh.txt +++ b/posh.txt @@ -18,8 +18,8 @@ PowerShell Commands - EMShell - PowerCLI - VBR -- REST API -- Console API +- REST-API +- Console-API - Git ### Help @@ -786,7 +786,8 @@ Add-WindowsCapability -Online -Name Rsat.CertificateServices.Tools~~~~0.0.1.0 Add-WindowsCapability -Online -Name Rsat.RemoteDesktop.Services.Tools~~~~0.0.1.0 Get-WindowsCapability -Name RSAT* -Online | Select-Object -Property DisplayName, State # отобразить список установленных компанентов -$Session = New-PSSession -ComputerName $srv +### Import-Module ActiveDirectory +$Session = New-PSSession -ComputerName $srv # -Credential $cred Export-PSsession -Session $Session -Module ActiveDirectory -OutputModule ActiveDirectory # экспортировать модуль из удаленной сесси (например, с DC) Remove-PSSession -Session $Session Import-Module ActiveDirectory @@ -802,13 +803,23 @@ $ldapsearcher.SearchRoot = "LDAP://OU=Domain Controllers,DC=$d1,DC=$d2" $ldapsearcher.Filter = "(objectclass=computer)" $dc = $ldapsearcher.FindAll().path -$usr = $env:username` # cписок групп текущего пользователя +$usr = $env:username # cписок групп текущего пользователя $ldapsearcher = New-Object System.DirectoryServices.DirectorySearcher $ldapsearcher.Filter = "(&(objectCategory=User)(samAccountName=$usr))" $usrfind = $ldapsearcher.FindOne() $groups = $usrfind.properties.memberof -replace "(,OU=.+)" $groups = $groups -replace "(CN=)" +DC (Domain Component) - компонент доменного имени +OU (Organizational Unit) - организационные подразделения (type), используются для упорядочения объектов +Container - так же используется для упорядочения объектов, контейнеры в отличии от подраделений не могут быть переименованы, удалены, созданы или связаны с объектом групповой политики (Computers, Domain Controllers, Users) +DN (Distinguished Name) — уникальное имя объекта и местоположение в лесу AD. В DN описывается содержимое атрибутов в дереве (путь навигации), требуемое для доступа к конкретной записи или ее поиска +CN (Common Name) - общее имя + +(Get-ADObject (Get-ADRootDSE).DefaultNamingContext -Properties wellKnownObjects).wellKnownObjects # отобразить отобразить контейнеры по умолчанию +redircmp OU=Client Computers,DC=root,DC=domain,DC=local # изменить контейнер компьютеров по умолчанию +redirusr # изменить контейнер пользователей по умолчанию + ### LAPS (Local Admin Password Management) Import-module AdmPwd.ps # импортировать модуль Get-AdmPwdPassword -ComputerName NAME # посмотреть пароль @@ -833,8 +844,22 @@ Get-ADObject -Filter {Deleted -eq $True -and ObjectClass -eq 'group' -and Name - $photo = [byte[]](Get-Content C:\Install\adm.jpg -Encoding byte) # преобразовать файл картинки в массив байтов (jpeg/bmp файл, размером фото до 100 Кб и разрешением 96×96) Set-ADUser support4 -Replace @{thumbnailPhoto=$photo} # задать значение атрибута thumbnailPhoto +### ADDomainController +Get-ADDomainController # выводит информацию о текущем контроллере домена (LogonServer), который используется данным компьютером для аутентификации (DC выбирается при загрузке в соответствии с топологией сайтов AD) +Get-ADDomainController -Discover -Service PrimaryDC # найти контроллер с ролью PDC в домене +Get-ADDomainController -Filter * | ft HostName,IPv4Address,Name,Site,OperatingSystem,IsGlobalCatalog # список все DC, принадлежность к сайту, версии ОС и GC + +При загрузке ОС служба NetLogon делает DNS запрос со списком контроллеров домена (к SRV записи _ldap._tcp.dc._msdcs.domain_), DNS возвращает список DC в домене с записью Service Location (SRV). Клиент делает LDAP запрос к DC для определения сайта AD по своему IP адресу. Клиент через DNS запрашивает список контроллеров домена в сайте (в разделе _tcp.sitename._sites...). + +USN (Update Sequence Numbers) - счетчик номера последовательного обновления, который существует у каждого объекта AD. При репликации контроллеры обмениваются значениями USN, объект с более низким USN будет при репликации перезаписан объектом с более высоким USN. Находится в свойствах - Object (включить View - Advanced Features). Каждый контроллер домена содержит отдельный счетчик USN, который начинает отсчет в момент запуска процесса Dcpromo и продолжает увеличивать значения в течение всего времени существования контроллера домена. Значение счетчика USN увеличивается каждый раз, когда на контроллере домена происходит транзакция, это операции создания, обновления или удаления объекта. + +Get-ADDomainController -Filter * | % { # отобразить USN объекта на всех DC в домене +Get-ADUser -Server $_.HostName -Identity support4 -Properties uSNChanged | select SamAccountName,uSNChanged +} + +dcpromo /forceremoval # принудительно выполнит понижение в роли контроллера домена до уровня рядового сервера. После понижения роли выполняется удаление всех ссылок в домене на этот контроллер. Далее производит включение сервера в состав домена, и выполнение обратного процесса, т.е. повышение сервера до уровня контроллера домена. + ### ADComputer -Get-ADDomainController -Filter * | ft HostName, IPv4Address, operatingsystem,site,IsGlobalCatalog,IsReadOnly # список DC в домене nltest /DSGETDC:$env:userdnsdomain # узнать на каком DC аудентифицирован хост (Logon Server) nltest /SC_RESET:$env:userdnsdomain\srv-dc2.$env:userdnsdomain # переключить компьютер на другой контроллер домена AD вручную (The command completed successfully) Get-ADComputer –Identity $env:computername -Properties PasswordLastSet # время последней смены пароля на сервере @@ -905,19 +930,40 @@ Get-ADReplicationFailure -Target dc-01 # список ошибок реплик Get-ADReplicationFailure -Target $env:userdnsdomain -Scope Domain Get-ADReplicationPartnerMetadata -Target dc-01 | select Partner,LastReplicationAttempt,LastReplicationSuccess,LastReplicationResult,LastChangeUsn # время последней и время успешной репликации с партнерами Get-ADReplicationUpToDatenessVectorTable -Target dc-01 # Update Sequence Number (USN) увеличивается каждый раз, когда на контроллере домена происходит транзакция (операции создания, обновления или удаления объекта), при репликации DC обмениваются значениями USN, объект с более низким USN при репликации будет перезаписан высоким USN. -Get-ADUser -server dc-01 -Identity support4 -Properties uSNChanged | select SamAccountName,uSNChanged # отобразить номер USN объета на конкретном DC -repadmin /replsummary # отображает все DC, время последней репликации по направлению (Source и Destination) и их состояние с учетом партнеров -repadmin /showrepl dc-01 # отображает всех партнеров DC по реплкации и их статус для всех разделов NC (Naming Contexts) разделов (DC=ForestDnsZones, DC=DomainDnsZones, CN=Schema, CN=Configuration) -repadmin /retry # повторить попытку привязки к целевому DC, если была ошибка 1722 или 1753 (RPC недоступен) -repadmin /replicate $srv2 $srv1 DC=$d1,DC=$d2 # выполнить репликацию с $srv1 на $srv2 только указанный раздела +repadmin /replsummary # отображает время последней репликации на всех DC по направлению (Source и Destination) и их состояние с учетом партнеров +repadmin /showrepl $srv # отображает всех партнеров по реплкации и их статус для всех разделов Naming Contexts (DC=ForestDnsZones, DC=DomainDnsZones, CN=Schema, CN=Configuration) +repadmin /replicate $srv2 $srv1 DC=domain,DC=local # выполнить репликацию с $srv1 на $srv2 только указанный раздела домена repadmin /SyncAll /AdeP # запустить межсайтовую исходящую репликацию всех разделов от текущего сервера со всеми партнерами по репликации /A # выполнить для всех разделов NC /d # в сообщениях идентифицировать серверы по DN (вместо GUID DNS - глобальным уникальным идентификаторам) /e # межсайтовая синхронизация (по умолчанию синхронизирует только с DC текущего сайта) /P # извещать об изменениях с этого сервера (по умолчанию: опрашивать об изменениях) -repadmin /Queue dc-01 # отображает кол-во запросов входящей репликации (очередь), которое необходимо обработать (причиной может быть большое кол-во партнеров или формирование 1000 объектов скриптом) +repadmin /Queue $srv # отображает кол-во запросов входящей репликации (очередь), которое необходимо обработать (причиной может быть большое кол-во партнеров или формирование 1000 объектов скриптом) repadmin /showbackup * # узнать дату последнего Backup + +Error: 1722 - сервер rpc недоступен (ошибка отката репликации). Проверить имя домена в настройках сетевого адаптера, первым должен идти адрес DNS-сервера другого контроллера домена, вторым свой адрес. +Get-Service -ComputerName $srv | select name,status | ? name -like "RpcSs" +Get-Service -ComputerName $srv -Name RpcSs -RequiredServices # зависимые службы +Зависимые службы RPC: +"Служба сведений о подключенных сетях" - должен быть включен отложенный запуск. Если служба срабатывает до "службы списка сетей", может падать связь с доменом (netlogon) +"Центр распространения ключей Kerberos" +"DNS-сервер" +nslookup $srv +tnc $srv -p 135 +repadmin /retry # повторить попытку привязки к целевому DC, если была ошибка 1722 или 1753 (RPC недоступен) + +repadmin /showrepl $srv +Last attempt @ 2022-07-15 10:46:01 завершена с ошибкой, результат 8456 (0x2108) # при проверки showrepl этого партнера, его ошибка: 8457 (0x2109) +Last success @ 2022-07-11 02:29:46 # последний успех +Когда репликация автоматически отключена, ОС записывает в DSA - not writable одно из четырех значений: +Path: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Parameters +Dsa Not Writable +#define DSA_WRITABLE_GEN 1 - версия леса несовместима с ОС +#define DSA_WRITABLE_NO_SPACE 2 - на диске, где размещена база данных Active Directory или файлы журналов (логи), недостаточно свободного места +#define DSA_WRITABLE_USNROLLBCK 4 - откат USN произошел из-за неправильного отката базы данных Active Directory во времени (восстановление из снапшота) +#define DSA_WRITABLE_CORRUPT_UTDV 8 - вектор актуальности поврежден на локальном контроллере домена + dcdiag /Test:replications /s:dc-01 # отображает ошибки репликации dcdiag /Test:DNS /e /v /q # тест DNS /a # проверка всех серверов данного сайта