Меню Закрыть

Заполняем описание (description) компьютера в AD именами пользователей

Некоторое время назад я писАл о расширении оболочки ADUC для получении имени зарегистрированного на компьютере пользователя. На этот раз публикую скрипт на PowerShell 2.0 для задания описаний компьютеров в AD на основании имени текущего зарегистрированного на нём пользователя и его номера телефона. Для снижения таймаута WMI взята и немного доработана конструкция Test-Host, благодаря чему достигается достаточно высокая скорость работы.

Для использования измените выделенное красным (OU и домен) для своего окружения.

Внимание! Скрипт работает только на Windows Server 2008 R2 и Windows 7, то есть там, где есть модуль Active Directory для PowerShell

10 Comments

  1. Zer0CooL

    Приветствую !
    Спасибо за статейку !
    Реально первый подобный скрипт который наконец то заработал ! 😀

    Вопросик

    Можно ли его как нибудь проапгрейдить =)
    интересует такая тема
    если никто на компе не залогинен что бы из description запись удалялась ?

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

    p.s вчера девчушка сидела на одном компе а сегодня уже на другом
    но на том компе котором она сидела вчера никого сегодня нет
    а запись осталась что она щас там ….

    получается я зря на человека наехал (у нас нельзя сидеть на нескольких компах под одной учеткой )

    • LHAV

      Что мешает на Logout повесить скрипт очистки данного поля?

  2. Stanislav

    Отредактил малец твой скрипт, добавил в описание еще IP
    ####################################################
    # Description.ps1 27/05/2015 PowerShell v3-4 mode by ®clevergod and ToSHa
    # Записываем в атрибут Description каждого объекта Computer, имя, залогоненого на нем пользователя + (IP)
    # Ложем в шедуллер DC и наслаждаемся (никаких больше логон скриптов) учите PowerShell ребята!
    ####################################################
    Import-Module ActiveDirectory
    #$erroractionpreference = “SilentlyContinue”
    foreach ($comp in (Get-ADComputer -filter * -SearchBase “OU=АЛМАТЫ,OU=KELET,DC=kelet,DC=local” | select -expand name)) #foreach {$_.name} ))
    { $ping = new-object System.Net.NetworkInformation.Ping
    trap {Write-Verbose $false; ” $comp – Ошибка пинга”; continue}
    if ($ping.send($comp).Status -eq “Success”)
    {
    $useroncomp = (Get-WmiObject -Class Win32_ComputerSystem -ComputerName $comp).username
    $IP = [System.Net.Dns]::GetHostAddresses(“$comp”)
    $lastuser = Get-ADUser ($useroncomp.split(“\”)[1]) -properties displayname
    Set-ADComputer $comp -Description (($lastuser.DisplayName) + ” (” + $IP + “)”)
    }
    else {Write-Host $comp.name “$comp – недоступен”}
    }

  3. Stanislav

    Записываем в атрибут Description каждого объекта Computer & User

    ####################################################
    # Description.ps1 27/05/2015 PowerShell v3-4 made by ®clevergod and ToSHa
    # Записываем в атрибут Description каждого объекта Computer & User, имя, залогоненого на нем пользователя + (IP)
    # Ложем в шедуллер DC и наслаждаемся (никаких больше логон скриптов) учите PowerShell ребята!
    ####################################################
    # Добавляем оснастку ActiveDirectory на старых PS
    Import-Module ActiveDirectory
    # Пропуск ошибок (в частности если у юзеров проблема с RPC)
    $erroractionpreference = “SilentlyContinue”
    # Погнали в цикле с переменными (точим под себя “OU=ОТДЕЛ,DC=company,DC=local”)
    foreach ($comp in (Get-ADComputer -filter * -SearchBase “OU=ОТДЕЛ,DC=company,DC=local” | select -expand name))
    { $ping = new-object System.Net.NetworkInformation.Ping
    trap {Write-Verbose $false; ” $comp – Ошибка пинга”; continue}
    if ($ping.send($comp).Status -eq “Success”)
    {
    $useroncomp = (Get-WmiObject -Class Win32_ComputerSystem -ComputerName $comp).username
    $user = (Get-WmiObject -Class Win32_ComputerSystem -ComputerName $comp).username
    $IP = [System.Net.Dns]::GetHostAddresses(“$comp”)
    $lastuser = Get-ADUser ($useroncomp.split(“\”)[1]) -properties displayname
    $lastLogIN = Get-ADUser ($useroncomp.split(“\”)[1]) -properties name
    # Описание ПК – Последний залогиненый + IP
    Set-ADComputer $comp -Description (($lastuser.DisplayName) + ” (” + $IP + “)”)
    # Описание Юзера – Комп
    Set-AdUser $lastLogIN -Description $comp
    }
    else {Write-Host $comp.name “$comp – недоступен”}
    }

  4. Hell

    Запинается – ошибка пинга
    Подскажите пожалуйста в чём может быть проблема?
    (машина доступна, с dc пингуется)

Добавить комментарий

Ваш адрес email не будет опубликован.

1 × 3 =

%d такие блоггеры, как: