top of page

PowerShell AD

Старые компьютеры и пользователи в AD.

В переменной указываем 60 дней учетных записей компьютеров, которые не логинились 60 и более дней:

$time = (get-date).AddDays(-60)

Выводим на экран компьютеры:

Get-ADComputer -Filter {LastLogon -lt $time} | Format-table

Выводим на экран пользователей:

Get-ADUser -Filter {LastLogon -lt $time} | Format-table

Выводим на экран имена компьютеров из определенного OU:

Get-ADComputer -Filter {LastLogon -lt $time} -SearchBase "ou=workstation,ou=computers,ou=company,dc=mydomain,dc=local" | select name

Переносим компьютеры из одного OU в другой:

Get-ADComputer -Filter {LastLogon -lt $time} -SearchBase "ou=workstation,ou=computers,ou=company,dc=systemco,dc=local" | Move-ADObject -TargetPath "ou=old_workstation,ou=workstation,ou=computers,ou=company,dc=systemco,dc=local"

Ещё один вариант:

get-adcomputer -filter "Passwordlastset -lt '1/1/2012'" -properties *| Select name,passwordlastset

Выводит на экран компьютеры, которые не меняли свой пароль до указанной даты.

get-adcomputer -filter "Passwordlastset -lt '1/1/2016'" -properties * -SearchBase "ou=workstation,ou=computers,ou=company,dc=mydomain,dc=local" | Select name,passwordlastset

Выводит на экран компьютеры в определенном OU, которые не меняли свой пароль до указанной даты.

Отображение/выгрузка информации.

Показать все компьютеры в домене

Get-ADComputer -Filter * | FT

Показать все компьютеры в домене, выводя имя, IP-адрес и версию ОС.

Get-ADComputer -Filter * -properties * | FT Name, IPv4Address, OperatingSystem

Показать все компьютеры в домене, имена которых начинаются на "SRV".
Get-ADComputer -Filter "Name -like 'SRV*'" | ft name

Показать компьютеры в OU Servers, их IP, версию ОС, описание. Параметр -SearchScope 1 означает, что нужно искать только в корневом разделе. Параметр -SearchScope 2 означает поиск компьютеров во всех вложенных OU.

Get-ADComputer -SearchBase 'OU=Servers,DC=domain,DC=ru' -SearchScope 1 -Filter * -Properties * | FT Name, IPv4Address, OperatingSystem, Description -AutoSize

     Выгрузить в HTML

Get-ADComputer -SearchBase 'OU=Servers,DC=domain,DC=ru' -SearchScope 1 -Filter * -Properties * | Select-Object Name, IPv4Address, OperatingSystem, Description | ConvertTo-Html | Out-File C:\OU_Servers.html

     Показать компьютеры с ОС Windows Server 2019 Datacenter из OU Servers

Get-ADComputer -SearchBase 'OU=Servers,DC=domain,DC=ru' -SearchScope 1 -Filter {OperatingSystem -Like '*Windows Server 2019 Datacenter*'} -Properties * | FT Name, IPv4Address, OperatingSystem, description

Копирование пользователей из одной группы безопасности в другую. 

Get-ADGroupMember "Group_Source" | % {Add-ADGroupMember "Group_Dest" -Members $_}

Например, копируем членов группы 2017 в группу 2018:

Get-ADGroupMember 2017 | % {Add-ADGroupMember 2018 -Members $_}

Также можно указывать полный путь к группам в AD:

Get-ADGroupMember "cn=2017,ou=Продажи,ou=Департаменты,ou=dfs,ou=security,ou=groups,ou=company,dc=domain,dc=local" | % {Add-ADGroupMember "cn=2018,ou=2017,ou=Продажи,ou=Департаменты,ou=dfs,ou=security,ou=groups,ou=company,dc=domain,dc=local" -Members $_}

Ввод в домен.

https://fixmypc.ru/post/vvodim-v-domen-s-powershell-add-computer/

Add-Computer -DomainName domain.local

Restart-Computer -Force

Ввод компьютера в определенную OU домена в Powershell

$ldap_path = 'OU=Moscow,DC=domain,DC=local'

Add-Computer -DomainName 'domain.local' -OUPath $ldap_path -Restart

Добавить пользователя в несколько групп AD.

#Добавить группы из OU "IPT", в переменную
$groups1 = Get-ADGroup -Filter * -SearchBase ‘ou=IPT,ou=folder access,ou=!Groups,DC=domain,DC=local’

#Добавить пользователя в группы, которые описаны в переменной
$groups1 | Add-ADGroupMember -Members i.ryazanov

#Добавить группы из OU "IPT", имя которых начинается c "fa rw ipt", в переменную
$groups1 = Get-ADGroup -Filter {name -like "fa rw ipt*"} -SearchBase ‘ou=IPT,ou=folder access,ou=!Groups,DC=domain,DC=local’

По умолчанию Get-ADGroup покажет все группы, в том числе из вложенных OU.

Если этого не требуется, используйте ключ -SearchScope и укажите параметр, с помощью которого можно ограничить глубину поиска:

• Base (0) — поиск только по указанному в запросе объекту. В результате поиска возвращается либо один объект, либо ничего. Данная область, как правило,  используется для проверки наличия объекта.
• OneLevel (1) — поиск только по дочерним объектам указанного объекта. Поиск по вложенным объектам не производится, также в результаты поиска не попадает сам базовый объект.
• Subtree (2) — поиск по всем дочерним объектам, включая вложенные. Сам базовый объект в поиск не попадает. Это значение используется по умолчанию.

Например,

Get-ADGroup -Filter {name -like "fa rw УП*"} -SearchBase 'ou=IPT,ou=folder access ,ou=!Groups,DC=domain,DC=local' -SearchScope OneLevel | ft name

Список пользователей в группах AD.

Если переносить папку с помощью Robocopy с сохранением прав в другой лес, то сохранившиеся группы безопасности должны быть Universal. Если группы Domain Local, то необходимо изменить их на Universal, иначе у пользователей из старого леса не будет доступа к папкам в новом. Чтобы изменить тип группы с Domain Local на Universal, необходимо, чтобы в группе отсутствовали пользователи из других лесов. Чтобы получить пользователей из других доменов/лесов в группах можно использовать скрипт:

 

Get-ADGroup -Filter * -Properties Members -SearchBase “OU="Департамент HR",OU=Дивизион правового сопровождения,OU=IPT,OU=folder ccess,ou=!Groups,dc=ria,DC=lan” | Get-ADGroupMember | where -Property distinguishedName -NotLike "*ria*" | ft name

Описание:

В домене ria.lan получаем список групп в OU "Департамент HR"

Get-ADGroup -Filter * -Properties Members -SearchBase “OU="Департамент HR",OU=Дивизион правового сопровождения,OU=IPT,OU=folder access,ou=!Groups,dc=ria,DC=lan”

Получаем список пользователей из этих групп:

Get-ADGroupMember

Сортируем на предмет отсутствия части доменного имени "*ria*":

where -Property distinguishedName -NotLike "*ria*"

Изменить группу безопасности Domain Local на Universal

Get-ADGroup -SearchBase "OU=test1,OU=Дивизион ИТ,OU=Folder Access,OU=Groups,OU=!Company,DC=RIA2,DC=LAN" -filter * | Set-ADGroup -GroupScope Universal

bottom of page