Добрый день. Нашёл на просторах сети пару скриптов, которые должны записывать в графу "описание" ПК информацию о текущей учётной записи, используемой на ПК. Но никак не получается заставить их работать.
On Error Resume Next
Dim adsinfo, ThisComp, oUser
Set adsinfo = CreateObject("adsysteminfo")
Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName)
Set oUser = GetObject("LDAP://" & adsinfo.UserName)
Thiscomp.put "description", "Logged on: " + oUser.cn + " " + CStr(Now)
ThisComp.Setinfo
On Error Resume Next
Dim adsinfo, ThisComp, oUser
Set adsinfo = CreateObject("adsysteminfo")
Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName)
Set oUser = GetObject("LDAP://" & adsinfo.UserName)
Thiscomp.put "description", ">> Logged off: " + oUser.cn + " " + CStr(Now)
ThisComp.Setinfo
ещё один скрипт для логона
$USERDNSDOMAIN = $env:USERDNSDOMAIN
$COMPUTERNAME = $env:COMPUTERNAME
$ObjectHash = @{}
$ObjectHash.UserName = $env:USERNAME
$ObjectHash.UserDomain = $USERDNSDOMAIN
$ObjectHash.DateTime = "{0:dd.MM.yyyy-HH:mm:ss}" -f $(Get-Date)
$ObjectHash.Console = ([Boolean]$((query.exe SESSION | findstr.exe ">console") -match $env:USERNAME)).ToString()
$ObjectHash.PSversion = $Host.Version.Major.ToString()
$ObjectHash.MACAddress = (Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "IPEnabled = $True" | sort IPConnectionMetric | select -First 1).MACAddress
$ObjectHash.Memory = [string]$((Get-WmiObject CIM_PhysicalMemory | measure -Property Capacity -Sum).Sum/1GB)+"GB"
$ObjectHash.Processor = (Get-WmiObject Win32_Processor).Name
$ObjectHash.Battery = (Get-WmiObject Win32_Battery).DeviceID
$ObjectHash.BiosSN = (Get-WmiObject Win32_BIOS).SerialNumber
$ObjectHash.SystemManufacturer = (Get-WmiObject Win32_ComputerSystem).Manufacturer
$ObjectHash.SystemModel = (Get-WmiObject Win32_ComputerSystem).Model
$select = "UserName,UserDomain,DateTime,Console,PSversion,MACAddress,Memory,Processor,Battery,BiosSN,SystemManufacturer,SystemModel" -split ","
if([int]$Host.Version.Major -ge 3){
$Description = New-Object -TypeName PSCustomObject -Property $ObjectHash | select $select | ConvertTo-Json -Compress
} else {
$Description = '{' + $(($select | % {'"'+"$($_)"+'"'+":"+'"'+"$($ObjectHash.$($_))"+'"'}) -join ",") + '}'
}
if(!$Description){$Description = "Null"}
$DirectoryEntry = New-Object System.DirectoryServices.DirectoryEntry
$USERDNSDOMAIN_DN = $DirectoryEntry.distinguishedName
$Root = [ADSI]"LDAP://$USERDNSDOMAIN/$USERDNSDOMAIN_DN"
$Root
$SearchPC = new-object System.DirectoryServices.DirectorySearcher($Root)
$SearchPC.Filter = "(&(objectClass=computer)(Name=$COMPUTERNAME))"
$Computer = [ADSI]$($SearchPC.FindOne().Path)
$Computer.put("Description",$Description)
$Computer.put("info",$Description)
# Если на любом этапе в скрипте возникла ошибка, не изменяем описание компьютера в AD
if($error.count -ge 1){exit}
# Если не было ни одной ошибки, изменяем описание компьютера в AD
$Computer.SetInfo()
exit
Делегирование настраивал, проверял - права на запись описания у нужных пользователей есть. Нужный ПК выделял в отдельное подразделение. В АД создана политика с указанными скриптами при входе и выходе пользователя. Скрипты лежат на E:\VBS