Domain Computer-SIDs ausgeben
Hallo,
wie kann ich auf die Schnelle die SID`s aller in der Domain enthaltenen Maschinen ausgeben?
Am liebsten wäre mir ein vbs-Script...
Danke im Voraus, ich frag nur schnell, weil ich etwas unter Zeitdruck bin...
Torsten
wie kann ich auf die Schnelle die SID`s aller in der Domain enthaltenen Maschinen ausgeben?
Am liebsten wäre mir ein vbs-Script...
Danke im Voraus, ich frag nur schnell, weil ich etwas unter Zeitdruck bin...
Torsten
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 228054
Url: https://administrator.de/contentid/228054
Ausgedruckt am: 20.11.2024 um 18:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo Thorsten,
Grüße Uwe
VBS
On Error Resume Next
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
Set objShell = CreateObject("Wscript.Shell")
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
strTarget = "LDAP://" & strDNSDomain
' Connect to Ad Provider
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCmd = CreateObject("ADODB.Command")
Set objCmd.ActiveConnection = objConnection
objCmd.CommandText = "SELECT Name,objectSID FROM '" & strTarget & "' WHERE objectCategory = 'computer'"
Const ADS_SCOPE_SUBTREE = 2
objCmd.Properties("Page Size") = 100
objCmd.Properties("Timeout") = 30
objCmd.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCmd.Properties("Cache Results") = False
Set objRecordSet = objCmd.Execute
allComputerSIDs = ""
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
sSID = objRecordSet.Fields("objectSID")
sName = objRecordSet.Fields("Name")
strHexSID = OctetToHexStr(sSID)
strDecSID = HexSIDToDec(strHexSID)
allComputers = allComputers & sName & ":" & strDecSID & vbCrLf
objRecordSet.MoveNext
Loop
fso.OpenTextFile("computer_sids.txt",2,true).Write(allComputers)
objShell.Run "notepad.exe computer_sids.txt"
Function OctetToHexStr(ByVal arrbytOctet)
' Function to convert OctetString (Byte Array) to a hex string.
Dim k
OctetToHexStr = ""
For k = 1 To Lenb(arrbytOctet)
OctetToHexStr = OctetToHexStr _
& Right("0" & Hex(Ascb(Midb(arrbytOctet, k, 1))), 2)
Next
End Function
Function HexSIDToDec(ByVal strSID)
' Function to convert most hex SID values to decimal format.
Dim arrbytSID, lngTemp, j
ReDim arrbytSID(Len(strSID)/2 - 1)
For j = 0 To UBound(arrbytSID)
arrbytSID(j) = CInt("&H" & Mid(strSID, 2*j + 1, 2))
Next
If (UBound(arrbytSID) = 11) Then
HexSIDToDec = "S-" & arrbytSID(0) & "-" _
& arrbytSID(1) & "-" & arrbytSID(8)
Exit Function
End If
If (UBound(arrbytSID) = 15) Then
HexSIDToDec = "S-" & arrbytSID(0) & "-" _
& arrbytSID(1) & "-" & arrbytSID(8)
lngTemp = arrbytSID(15)
lngTemp = lngTemp * 256 + arrbytSID(14)
lngTemp = lngTemp * 256 + arrbytSID(13)
lngTemp = lngTemp * 256 + arrbytSID(12)
HexSIDToDec = HexSIDToDec & "-" & CStr(lngTemp)
Exit Function
End If
HexSIDToDec = "S-" & arrbytSID(0) & "-" _
& arrbytSID(1) & "-" & arrbytSID(8)
lngTemp = arrbytSID(15)
lngTemp = lngTemp * 256 + arrbytSID(14)
lngTemp = lngTemp * 256 + arrbytSID(13)
lngTemp = lngTemp * 256 + arrbytSID(12)
HexSIDToDec = HexSIDToDec & "-" & CStr(lngTemp)
lngTemp = arrbytSID(19)
lngTemp = lngTemp * 256 + arrbytSID(18)
lngTemp = lngTemp * 256 + arrbytSID(17)
lngTemp = lngTemp * 256 + arrbytSID(16)
HexSIDToDec = HexSIDToDec & "-" & CStr(lngTemp)
lngTemp = arrbytSID(23)
lngTemp = lngTemp * 256 + arrbytSID(22)
lngTemp = lngTemp * 256 + arrbytSID(21)
lngTemp = lngTemp * 256 + arrbytSID(20)
HexSIDToDec = HexSIDToDec & "-" & CStr(lngTemp)
If (UBound(arrbytSID) > 23) Then
lngTemp = arrbytSID(25)
lngTemp = lngTemp * 256 + arrbytSID(24)
HexSIDToDec = HexSIDToDec & "-" & CStr(lngTemp)
End If
End Function
Powershell:
Import-Module ActiveDirectory
Get-ADComputer -Filter * | select Name,SID | out-file "c:\computer_sids.txt"