Скрипт, который можно поместить в logon и logoff скрипты в GPO, который добавляет описание, департамент, userprincipalname и компанию в свойства объекта компьютера в activedirectory исходя из свойств пользователя. Поможет адмминистраторам идентифицировать, какой пользователь работает за компьютером.
Например: Пользователь Иван Иванов, находящийся в департаменте IT компании ООО "Рога и Копыта" осуществляет логон на компьютер. После отработки скрипта в свойствах компьютера в AD появится userprincipalname - Иван Иванов, назначится компания "Рога и Копыта", департамент станет IT. Если не был назначен менеджер компьютера - тогда в описание будет добавлена запись, что компьютеру не назначен владелец, иначе в описании будет имя пользователя - менеджера компьютера.
Для корректной работы скрипта у пользователя должны быть необходимые права на указанные атрибуты в объектах компьютеров.
Для работы скрипта не требуется модуль AcriveDirectory в PowerShell и как следсвие установленный RSAT на компьютере, т.е. можно смело запускать на любых компьютерах.
Скрипт доступен в github .
На всякиий случай, добалю еще его код сюда.
$FilterComputers = "(&((objectcategory=computer)(name=$env:computername)(!operatingsystem=Windows Server*)(!name=ESX*)))" $ErrorActionPreference = "SilentlyContinue" $strName = $env:username $strComputerName = $env:ComputerName $LastLogon=Get-Date -format "dd.MM.yyy HH:mm:ss" $Comp=(([adsisearcher]"$FilterComputers").findall()).properties $OS = $Comp.operatingsystem $CompOU = $Comp.distinguishedname $byManaged = $Comp.managedby if ($byManaged) { $byManaged=$byManaged.Split(",") $byManaged=$byManaged.Replace("CN=", "") $byManaged=$byManaged[0] } else {$byManaged = "Владелец компьютера не назначен ТП"} #$LastLogon + "," + $strName + "," + $strComputerName $User = (([adsisearcher]"(&(objectCategory=User)(samaccountname=$strName))").findall()).properties $UserName = $User.displayname $UserDepartment=$User.department $UserCompany=$User.company if (( $OS -notlike "*Server*") -and ( $CompOU -notlike "*OU=Servers*")) { $dom = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() $root = $dom.GetDirectoryEntry() $search = [System.DirectoryServices.DirectorySearcher]$root $search.Filter = "(cn=$strComputerName)" $result = $search.FindOne() $ChangeComp=[ADSI]$result.Path if (($UserName -ne "") -and ($LastLogon -ne "" )) { $descr = "Logged on: " + $UserName + " " + $LastLogon #, " ManagedBy" $byManaged $ChangeComp.UserPrincipalName=$descr } if (($byManaged -ne "") -and ($byManaged -ne $null)){ $ChangeComp.Description=$byManaged } if (($UserDepartment -ne "") -and ($UserDepartment -ne $null)){ $ChangeComp.Department=$UserDepartment } if (($UserCompany -ne "") -and ($UserCompany -ne $null)) { $ChangeComp.Company=$UserCompany } $ChangeComp.SetInfo() }
Share the article with your friends in social networks, maybe it will be useful to them.
If the article helped you, you can >>thank the author<<