Hi,
unzwar suche ich das Eventlog nach einer bestimmten ID, gebe mir dann den User der Eventid aus, dem die Berechtigungen fehlen auf die DCOM Komponente und möchte diese dann über nen cmd command hinzufügen.
Funktioniert lokal (Win7) super. Nur auf unseren Servern 20018R2 passiert nichts außer dass das Script CPU Auslastung frisst, wird als Admin gestartet, Eventeinträge sind da und WMI Query per Powersshell geht. WMI berechtigungen sind auch da.
AutoIt
#include <Array.au3>
#include <Date.au3>
$past_15days = _DateAdd("D", -3, _NowCalc())
$past_15days = StringReplace($past_15days, "/", "")
$past_15days = StringReplace($past_15days, ":", "")
$past_15days = StringStripWS($past_15days, 8)
$past_15days &= ".000000-000"
local $user[30]
$wbemFlagReturnImmediately=0x10
$wbemFlagForwardOnly=0x20
$colItems=""
$strComputer="localhost"
$Output=""
$Output&="Computer: " &$strComputer & @CRLF
$Output&="==========================================" & @CRLF
$objWMIService=ObjGet("winmgmts:\\" &$strComputer &"\root\CIMV2")
$colItems=$objWMIService.ExecQuery("SELECT * FROM Win32_NTLogEvent WHERE LogFile='System' AND EventCode='10016' AND TimeWritten>'" & $past_15days & "'", "WQL");, _
;~ $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
$begin=TimerInit()
If IsObj($colItems) Then
For $objItem In $colItems
$Output&="User: " &$objItem.User & @CRLF
_ArrayAdd($user,$objItem.User)
Next
Else
Msgbox(0, "WMI-Ausgabe","Keine WMI-Objekte gefunden für Klasse: " & "Win32_NTLogEvent")
Endif
$user = _ArrayUnique($user)
$arr2 = _RemoveEmptyArrayElements($user)
for $i = 1 to $arr2[0] -1
Traytip("Hallo",$arr2[$i] & " gefunden - wird hinzugefügt",2,1)
$CMD = 'net localgroup "Distributed COM Users" ' & '"' & $arr2[$i] & '"' &' /add'
RunWait(@ComSpec & " /c " & $CMD)
Next
;RunWait(@ComSpec & " /c " & $CMD)
Func _RemoveEmptyArrayElements ( $_Array )
Local $_Item
For $_Element In $_Array
If $_Element= '' Then
_ArrayDelete ( $_Array, $_Item )
Else
$_Item+=1
EndIf
Next
Return ( $_Array )
EndFunc ;==> _RemoveEmptyArrayElements ( )
Func WMIDateStringToDate($dtmDate)
Return (StringMid($dtmDate, 5, 2) &"/" &StringMid($dtmDate, 7, 2) &"/" &StringLeft($dtmDate, 4) & " " &StringMid($dtmDate, 9, 2) &":" &StringMid($dtmDate, 11, 2) &":" &StringMid($dtmDate,13, 2))
EndFunc
Alles anzeigen