Hallo ,
habe mir ein script geschrieben was vom remote rechner die Gruppe auließt.
Funktioniert auch wunderbar bloss bei einigen Hosts kriege ich folgenden fehler und mein script stürtzt ab.
F:\autoit\entwicklung\admin_group\03.au3 (97) : ==> Missing right bracket ')' in expression.:
$colItems = $objWMIService.ExecQuery("Select SID from Win32_Group WHERE Domain='" & $srv & "'", "WQL", 0x30)
$colItems = ^ ERROR
->12:23:02 AutoIT3.exe ended.rc:1
Es würde mir alleine reichen wenn er nicht abstürtzt und weiter macht..
Danke vorab für die hilfe...
Spoiler anzeigen
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=..\..\ico\11.ico
#AutoIt3Wrapper_outfile=AdminOnHost.exe
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <array.au3>
#include <File.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>
#include <inet.au3>
;#include <adfunctions.au3>
$header = "Rechner|User|Login|Besitzer|IP|Status|"
[/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("AdminOnHos", 900, 560, 231, 154)
GUISetFont(8, 400, 0, "@Arial Unicode MS")
GUISetBkColor(0xA6CAF0)
$ListViewhost = GUICtrlCreateListView("Hostname", 32, 32, 170, 430)
$Liste = GUICtrlCreateListView("Host|Group|Typ|Objekt", 224, 32, 670, 430)
$Hostladen = GUICtrlCreateButton("Hostladen", 32, 14, 75, 17, $WS_GROUP)
;$Checkall22 = GUICtrlCreateButton("Last Logged OnUSER", 32, 460, 130, 17, $WS_GROUP)
$Checkall11 = GUICtrlCreateButton("Starten", 220, 480, 130, 17, $WS_GROUP)
$CheckUser = GUICtrlCreateButton("User Info", 350, 480, 70, 17, $WS_GROUP)
$Inputcn = GUICtrlCreateInput("", 32, 480, 170, 23)
$Insert = GUICtrlCreateButton("Hinzufügen", 42, 510, 130, 17, $WS_GROUP)
$del = GUICtrlCreateButton("Löschen", 42, 530, 130, 17, $WS_GROUP)
;$stop = GUICtrlCreateButton("Stop", 32, 513, 75, 17, $WS_GROUP)
$Export = GUICtrlCreateButton("Export", 820, 480, 75, 17, $WS_GROUP)
GUISetState(@SW_SHOW)
Global $FileOpenDialog, $ListViewText, $Text = "", $IP = "", $STATus = "", $result, $hostincsveingetragen
Global $server, $objWMIService
Global $oError = ObjEvent("AutoIt.Error", "_ErrFunc")
While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$nMsg = GUIGetMsg()
[/autoit] [autoit][/autoit] [autoit]Switch $nMsg
Case $del
_GUICtrlListView_DeleteAllItems($ListViewhost)
_GUICtrlListView_DeleteAllItems($Liste)
Case $Insert
GUICtrlCreateListViewItem(GUICtrlRead($Inputcn), $ListViewhost)
Case $Export
_export()
Case $GUI_EVENT_CLOSE
Exit
Case $Hostladen
_load()
Case $Checkall11
_check()
Case $CheckUser
_userinfo()
EndSwitch
WEnd
Func _check()
[/autoit] [autoit][/autoit] [autoit]Local $icount = _GUICtrlListView_GetItemCount($ListViewhost)
For $i = 0 To $icount - 1
$ListViewText = _GUICtrlListView_GetItemText($ListViewhost, $i)
;_befuelle_lv_liste()
Global $server = $ListViewText
If $CmdLine[0] > 0 Then $server = $CmdLine[1]
$objWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & $server & "\root\cimv2")
Ping($server, 100) ; Host anpingen
If not @error = 0 Then MsgBox(0, "", "Host Offline")
If FileExists('\\' & $server & '\c$\windows\system32\') Then Membership_Administrators_Local($server)
If FileExists('\\' & $server & '\c$\winnt\system32\') Then Membership_Administrators_Local($server)
Next
EndFunc
Func Membership_Administrators_Local($srv)
If StringUpper($srv) = StringUpper("Localhost") Then $srv = @ComputerName
Local $function_name = "Members"
Local $LM_members, $x, $LM_LocalGroup_Name, $type, $colItems2, $LM_local_user, $y, $line, $TimeStamp
Local $filename_ms = $function_name & "_" & $srv
Local $filename_error_current = $function_name & "_" & $srv & "_error.log"
$LM_LocalGroup_Name = "Administrators"
$colItems = $objWMIService.ExecQuery("Select SID from Win32_Group WHERE Domain='" & $srv & "'", "WQL", 0x30)
;If IsObj($colItems) Then
If Not IsObj($objWMIService) Then Return
For $objItem In $colItems
If StringUpper($objItem.SID) = StringUpper("S-1-5-32-544") Then $LM_LocalGroup_Name = $objItem.Name
Next
;EndIf
$type = ""
$LM_local_user = ""
$colItems = $objWMIService.ExecQuery("Select * from Win32_GroupUser Where GroupComponent=""Win32_Group.Domain='" & $srv & "',Name='" & $LM_LocalGroup_Name & "'""", "WQL", 0x30)
If IsObj($colItems) Then
For $objItem In $colItems
If $objItem.PartComponent <> "" Then
$x = StringSplit($objItem.PartComponent, """")
$type = StringMid($x[1], StringInStr($x[1], ":Win32_") + 7, (StringInStr($x[1], ".") - (StringInStr($x[1], ":Win32_") + 7)))
$LM_members &= $srv & "|" & $LM_LocalGroup_Name & "|" & $type & "|" & $x[2] & "\" & $x[4] & "|" & @CRLF
GUICtrlCreateListViewItem($srv & "|" & $LM_LocalGroup_Name & "|" & $type & "|" & $x[2] & "\" & $x[4] & "|", $Liste)
EndIf
Next
EndIf
ConsoleWrite($LM_members)
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>Membership_Administrators_Local
[/autoit] [autoit][/autoit] [autoit]Func _userinfo()
[/autoit] [autoit][/autoit] [autoit]$aSel = _GUICtrlListView_GetSelectedIndices($Liste, True)
For $i = 1 To $aSel[0]
$var1 = _GUICtrlListView_GetItemText($Liste, $aSel[$i], 3)
$var2 = _GUICtrlListView_GetItemText($Liste, $aSel[$i], 0)
$var1 = StringReplace($var1, 'emea\', '')
If $var1 = "" Then
MsgBox(0, "", "User ID nicht bekannt")
Else
;RunAs($sUserName, 'emea', $sPassword, 0, @ScriptDir & '\Modul\lockout.exe '& $var1, @SystemDir)
$TSDIS = Run(@ComSpec & " /c " & @ScriptDir & '\Modul\lockout.exe ' & $var1, "", @SW_HIDE)
ConsoleWrite(@ScriptDir & '\Modul\lockout.exe ' & $var1)
EndIf
Next
EndFunc ;==>_userinfo
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _export()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$hWnd = $Liste
$path = FileSaveDialog('ListView-Export speichern', @ScriptDir, "CSV Datei (*.csv)")
If @error Then Return MsgBox(0, 'Fehler', 'Keine Zieldatei gewählt.')
FileWrite($path & ".csv", _GUICtrlListView_Export($hWnd, 1, ','))
EndFunc ;==>_export
Func _GUICtrlListView_Export($hWnd, $exType = 0, $Delim = Default) ; $exType=0 Array / $exType=1 String
If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
Local $row = _GUICtrlListView_GetItemCount($hWnd)
If $exType Then
If $Delim <> Default Then Local $oldDelim = Opt('GUIDataSeparatorChar', $Delim)
Local $sOut = ''
For $i = 0 To $row - 1
$sOut &= _GUICtrlListView_GetItemTextString($hWnd, $i) & @CRLF
Next
If $Delim <> Default Then Opt('GUIDataSeparatorChar', $oldDelim)
Opt("MustDeclareVars", 1)
Opt("MustDeclareVars", 1)
Opt("MustDeclareVars", 1)
Opt("MustDeclareVars", 1)
Global $countc, $countm, $counts, $Labelhp, $lv3countm
Return $sOut
EndIf
Local $col = _GUICtrlListView_GetColumnCount($hWnd)
Local $aOut[$row][$col]
If $col = 1 Then
ReDim $aOut[$row]
For $i = 0 To UBound($aOut) - 1
$aOut[$i] = _GUICtrlListView_GetItemText($hWnd, $i)
Next
Return $aOut
EndIf
For $i = 0 To UBound($aOut) - 1
For $j = 0 To UBound($aOut, 2) - 1
$aOut[$i][$j] = _GUICtrlListView_GetItemText($hWnd, $i, $j)
Next
Next
Return $aOut
EndFunc ;==>_GUICtrlListView_Export
Func _Load() ; Datenbank-Datei laden
_GUICtrlListView_DeleteAllItems($ListViewhost) ; Das Handle eben noch bestimmen (s. Anfang des Threads)
_GUICtrlListView_DeleteAllItems($Liste) ; Das Handle eben noch bestimmen (s. Anfang des Threads)
Local $sItem
$FileOpenDialog = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4)
Local $hFile = FileOpen($FileOpenDialog, 0) ; Datei zum lesen öffnen
If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
_GUICtrlListView_BeginUpdate($ListViewhost) ; Listview sperren
While True ; Endlosschleife
$sItem = FileReadLine($hFile) ; Zeile aus der Datei lesen
If @error Then ExitLoop ; wenn das Ende der Datei erreicht ist, dann Endlosschleife verlassen
GUICtrlCreateListViewItem($sItem, $ListViewhost) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
WEnd
_GUICtrlListView_EndUpdate($ListViewhost) ; Listview wieder freigeben
FileClose($hFile) ; Datei schließen
EndIf
EndFunc ;==>_Load
Func _ErrFunc()
Return
EndFunc