Получить учетные записи из компьютерного объекта в AD с помощью VBscript - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь получить дату из атрибута accountExpires объекта компьютера в Active Directory. Если объект не был установлен, он просто говорит «никогда», а если вы посмотрите, просто наберите много чисел. Я сделал это, и это работает для атрибута «lastlogon», но не для «accountExpires». Может быть, кто-то может мне помочь.

Я использую VBscript, потому что наша компания использует это в нашем логинскрипте.

On Error Resume Next

Dim ADSysInfo, objComputer, lobjDate, laccountExpiresDate, WSHShell
Set WSHShell = CreateObject("WScript.Shell")

Set ADSysInfo = CreateObject("ADSystemInfo")
Set objComputer = GetObject("LDAP://" & ADSysInfo.ComputerName)
msgbox objComputer
Set lobjDate = objComputer.get("lastLogon")         '   <----- Working ----->
'   Set lobjDate = objComputer.get("accountExpires")    ' <----- Not Working ----->
msgbox err.number
if IsNull(lobjDate) then
    msgbox "No Date"
else
    laccountExpiresDate = Integer8Date(lobjDate, getLocaltimeZoneBias)
    msgbox laccountExpiresDate
end if

Function Integer8Date(objDate, lngBias)
' Function to convert Integer8 (64-bit) value to a date, adjusted for
' local time zone bias.
  Dim lngAdjust, lngDate, lngHigh, lngLow
  lngAdjust = lngBias
  lngHigh = objDate.HighPart
  lngLow = objdate.LowPart
' Account for bug in IADslargeInteger property methods.
  If lngLow < 0 Then
    lngHigh = lngHigh + 1
  End If
  If (lngHigh = 0) And (lngLow = 0) Then
    lngAdjust = 0
  End If
  lngDate = #1/1/1601# + (((lngHigh * (2 ^ 32)) + lngLow) / 600000000 - lngAdjust) / 1440
  Integer8Date = CDate(lngDate)
End Function  

' Obtain local time zone bias from machine registry.
Function getLocaltimeZoneBias  
  Dim lngBiasKey, lngBias

  lngBiasKey = WSHShell.RegRead("HKLM\System\CurrentControlSet\Control\TimeZoneInformation\ActiveTimeBias")
  If UCase(TypeName(lngBiasKey)) = "LONG" Then
    lngBias = lngBiasKey
  ElseIf UCase(TypeName(lngBiasKey)) = "VARIANT()" Then
    lngBias = 0
    For k = 0 To UBound(lngBiasKey)
      lngBias = lngBias + (lngBiasKey(k) * 256^k)
    Next
  End If
  getLocaltimeZoneBias = lngBias
End Function 'getLocaltimeZoneBias   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...