Перейти к содержимому

ad

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

# Define group names
$sourceGroup = "G-Rec"
$destinationGroup = "G-Rec-fslogix"

# Import Active Directory module
Import-Module ActiveDirectory

try {
    # Get members from source group (first 50)
    $users = Get-ADGroupMember -Identity $sourceGroup | Select-Object -First 50
    
    if ($users.Count -eq 0) {
        Write-Host "No users found in the source group."
        exit
    }
    
    Write-Host "Found $($users.Count) users in the source group. Processing..."
    
    # Add users to destination group
    Add-ADGroupMember -Identity $destinationGroup -Members $users -ErrorAction Stop
    Write-Host "Successfully added users to destination group $destinationGroup"
    
    # Remove users from source group
    Remove-ADGroupMember -Identity $sourceGroup -Members $users -Confirm:$false -ErrorAction Stop
    Write-Host "Successfully removed users from 
Читать далее

Как разблокировать (unblock) файл скаченный из сети на серверах в ad

Задача разблокировать файл на определённых сервера

# Импортируем модуль ActiveDirectory, если он не установлен
if (-not (Get-Module -ListAvailable -Name ActiveDirectory)) {
    Install-Module -Name ActiveDirectory -Force
}
Import-Module ActiveDirectory
 
# Фильтруем компьютеры, которые являются серверами (например, по имени или OU)
$servers = Get-ADComputer -Filter {name -like "*HWRDS*"} -Property Name | Select-Object -ExpandProperty Name
 
# Список файлов для разблокировки
$filesToUnlock = @("Zone.exe") # Добавьте здесь нужные вам файлы
 
function UnBlock-FilesOnRemoteServers {
    param (
        [string[]]$servers,
        [string[]]$files
    )
 
    foreach ($server in $servers) {
        Write-Host "Processing server: $server"
         
        # Убедимся, что сервер доступен
        if (Test-Connection -ComputerName $server -Count 1 -Quiet) {
            foreach ($file in $files) 
Читать далее

Как с помощью PowerShell посчитать сколько пользователей входит в группу где много вложенных групп

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

Import-Module ActiveDirectory

$mainGroup = "G-Terminal"
$global:allResults = @() # Используем глобальную переменную
$groupCache = @{}

function Get-GroupInfo {
    param (
        [string]$groupName,
        [string]$parentGroup = "",
        [int]$level = 0
    )
    
    # Проверяем кэш
    if ($groupCache.ContainsKey($groupName)) {
        return $groupCache[$groupName]
    }

    try {
        $group = Get-ADGroup -Identity $groupName -Properties Member
        $members = @(Get-ADGroupMember -Identity $groupName -ErrorAction Stop)
        
        $userCount = 0
        $nestedGroups = @()
        $totalUsers = 0

        # Считаем пользователей и вложенные группы
        foreach ($member in $members) {
            if ($member.objectClass -eq 'user') {
                $userCount++
            }
            elseif ($member.objectClass -eq 'group') {
                $nestedGroups += $member
            
Читать далее

Как вывести пользователей которые состоят в административных группах domain admin, enterprise admin, schema admin

# Импортируем модуль Active Directory
Import-Module ActiveDirectory

# Определяем группы
$groups = "Domain Admins", "Enterprise Admins", "Schema Admins"

# Создаем пустой массив для хранения пользователей
$allUsers = @()

# Получаем пользователей из каждой группы
foreach ($group in $groups) {
    $members = Get-ADGroupMember -Identity $group
    foreach ($member in $members) {
        # Получаем информацию о пользователе и фильтруем по "Password Never Expires"
        $user = Get-ADUser -Identity $member.SamAccountName -Properties PasswordNeverExpires
        if ($user.PasswordNeverExpires -eq $true) {
            # Создаем новый объект с необходимыми свойствами
            $userInfo = [PSCustomObject]@{
                Name                  = $user.Name
                SamAccountName        = $user.SamAccountName
                Group                 = $group
                PasswordNeverExpires   = $user.PasswordNeverExpires
            }
            $allUsers += $userInfo
        }
    }
Читать далее

Как вывести всех пользователей которые состоят в определённых группах и отпаривать уведомление email и обойти ограничение Get-ADGroupMember : The size limit for this request was exceeded

Задача сделать список пользователей которые состоят в определённых группах и обойти ограничение Get-ADGroupMember : The size limit for this request was exceeded

Import-Module ActiveDirectory
[system.gc]::Collect()

#------ Logging section ------#



$fileLocation = (gi $MyInvocation.InvocationName) | ForEach-Object {
$fileDirectory = "$($_.DirectoryName)\$($_.BaseName)";
"$fileDirectory\$($_.BaseName)_$('{0:yyyy-MM-dd}'-f(date)).csv";
if (!(Test-Path "$fileDirectory")) {
ni "$fileDirectory" -ItemType "directory" | Out-Null
}
}


$Domain = "admin.ru"
$Sender = "hel@admin.ru"
$smtpserver = "m.admin.ru"



# Определить базу поиска
$searchBase = "OU=Locations,DC=admin,DC=ru"

# Найти всех отключенных пользователей в указанном OU
$disabledUsersInOU = Get-ADUser -Filter * -SearchBase $searchBase

# Создать объект DirectorySearcher для поиска групп по шаблону
$searcher = New-Object DirectoryServices.DirectorySearcher
$searcher.SearchRoot = New-Object DirectoryServices.DirectoryEntry("LDAP://DC=admin,DC=ru")
Читать далее

Как удалить отключённых пользователей из определённых групп.

Задача очистить определены группы от отключённых пользователей

# Определить базу поиска
$searchBase = "OU=Locations,DC=admin,DC=ru"

# Найти всех отключенных пользователей в указанном OU
$disabledUsersInOU = Get-ADUser -Filter {Enabled -eq $false} -SearchBase $searchBase

# Создать объект DirectorySearcher для поиска групп по шаблону
$searcher = New-Object DirectoryServices.DirectorySearcher
$searcher.SearchRoot = New-Object DirectoryServices.DirectoryEntry("LDAP://DC=admin,DC=ru")
$searcher.Filter = "(&(objectClass=group)(name=*indeed*)(name=*G-VPN*))"
$searcher.PageSize = 1000

# Найти все группы, соответствующие шаблонам
$targetGroups = $searcher.FindAll()

foreach ($group in $targetGroups) {
    $groupEntry = $group.GetDirectoryEntry()
    $groupMembers = @()

    try {
        # Получить всех членов группы
        $members = $groupEntry.Properties["member"]
        $groupMembers += $members
    } catch {
        Write-Host "Error retrieving members for group $($groupEntry.Properties["name"].Value): $_"
    }

    foreach 
Читать далее

Как найти почему не работает доменная авторизация 1с.

Проблема заключается что в офисе в ект с локальных пк не работает доменная авторизация 1с клиент. Но если тот же самый пользователь подключается к терминальной ферме в мск то все работает.

Поиск неисправности на клиенте .

На клиенте включаем отладочный журнал

по пути C:\Program Files\1cv8\8.3.22.2143\bin\conf

файл logcfg.xml

содержимое

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="C:\log" history="168">
    <event>
      <ne property="Name" value=""/>
    </event>
    <property name="all">
    </property>
  </log>
</config>

В папку «C:\log будут складываться логи

Ошибки

02:57.522001-0,EXCP,0,process=1cv8c,OSThread=3524,Descr=InitializeSecurityContext: Error 8009030c!
02:57.568000-0,EXCP,2,process=1cv8c,OSThread=6096,Exception=580392e6-ba49-4280-ac67-fcd6f2180121,Descr='src\vrscore\src\VResourceSessionImpl.cpp(534):
580392e6-ba49-4280-ac67-fcd6f2180121: Неправильное имя пользователя или пароль

8009030c! ошибка ldap но если под тем же пользователем но с мск то все норм.

Так же … Читать далее

Как синхронизировать папку с помощью PowerShell с фильтром по AD и запустить синхронизацию одновременно со всеми серверами.

Задача синхронизировать одну папку со множеством сервером. Делается это для распространения базы Касперского на удалённые площадки.

function Write-Log {
    param (
        [string]$Message
    )

    # Получение текущей даты и времени
    $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    
    # Форматирование сообщения в формате "дата время: сообщение"
    $logMessage = "{0}: {1}" -f $timestamp, $Message
    
    # Запись сообщения в лог-файл
    $logMessage | Out-File -FilePath "D:\Programs\replica_kasper\Log.txt" -Append
}

# Установите модуль PSParallel, если у вас его нет
if (-not (Get-Module -Name PSParallel -ListAvailable)) {
    Install-Module PSParallel -Scope CurrentUser
}

# Загрузите модуль PSParallel
Import-Module PSParallel

# Получение списка серверов из AD
$servers = Get-ADComputer -Filter {OperatingSystem 
Читать далее

Как исправить ошибку Windows cannot disable object because: The directory service encountered an unknown failure.

На одном из контролере домена вышла ошибка Windows cannot disable object because: The directory service encountered an unknown failure. Проверил dcdiag и repadmin ни каких ошибок. Удалил обновление KB5008285  перезагрузил все заработало.

 

Как удалить дубликаты в DNS и сделать динамическое обновление DNS через DHCP в Windows 2016

У нас проблема возникла с дублированием записей в обратной зоне PTR DNS. Но для нас не было проблем что они там дублируются . Но после того как внедрили fortigate. Начались проблемы с интернетом. Он там хитро трафик делит. И смотрит в днс.

Решили настроить динамическое обновление dns через DHCP.

Сначала создали учётку srv.dnsupd для доступа dns. И добавили её в группу DnsUpdateProxy.

Настройка DNS.

Включить автоматическую очистку устаревших записей. Оставим по умолчанию 7  дней так как у нас dhcp аренда 8 дней.

  1. Войдите в клиентскую среду и нажмите Пуск > Программы > Администрирование > DNS >  Диспетчер DNS .
  2. Щелкните
Читать далее
Яндекс.Метрика