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

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

Import-Module ActiveDirectory

foreach ($comp in (Get-ADComputer -filter * -SearchBase "CN=Computers,DC=domain,DC=corp" | foreach {$_.name} ))
    {   $ping = new-object System.Net.NetworkInformation.Ping
        trap {Write-Verbose "Ошибка пинга"; $False; continue}
        if ($ping.send($comp,50).Status -eq "Success" )
        {
        $useroncomp = (Get-WmiObject -Class Win32_ComputerSystem -ComputerName $comp).username
        $lastuser = Get-ADUser ($useroncomp.split("\")[1]) -properties displayname, telephonenumber
        Set-ADComputer $comp -Description (($lastuser.DisplayName) + " (" + ($lastuser.telephonenumber) + ")")
        }
        else {Write-Host $comp "- недоступен"}
    }

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

Похожие статьи