admin On host

  • 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
    [autoit]

    #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>

    [/autoit] [autoit][/autoit] [autoit]

    $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)

    [/autoit] [autoit][/autoit] [autoit]

    $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)

    [/autoit] [autoit][/autoit] [autoit]

    ;$stop = GUICtrlCreateButton("Stop", 32, 513, 75, 17, $WS_GROUP)
    $Export = GUICtrlCreateButton("Export", 820, 480, 75, 17, $WS_GROUP)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    Global $FileOpenDialog, $ListViewText, $Text = "", $IP = "", $STATus = "", $result, $hostincsveingetragen
    Global $server, $objWMIService
    Global $oError = ObjEvent("AutoIt.Error", "_ErrFunc")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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)

    [/autoit] [autoit][/autoit] [autoit]

    Case $Export
    _export()

    [/autoit] [autoit][/autoit] [autoit]

    Case $GUI_EVENT_CLOSE
    Exit
    Case $Hostladen
    _load()
    Case $Checkall11

    [/autoit] [autoit][/autoit] [autoit]

    _check()
    Case $CheckUser
    _userinfo()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    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]

    [/autoit] [autoit][/autoit] [autoit]

    $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)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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)

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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)

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func _ErrFunc()
    Return
    EndFunc

    [/autoit]

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von subzero007 (5. März 2010 um 13:44)

  • so diese option soll es ja nicht mehr geben..

    RunErrorsFatal

    Gibt es einen ersatz dafür?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • so habe die ursache passiert nur dann wenn ich kein admin auf dem remote rechner bin...

    wie kann ich das abfragen??

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • so habe die ursache passiert nur dann wenn ich kein admin auf dem remote rechner bin...

    wie kann ich das abfragen??

    Mit IsAdmin() kannst du erfragen ob der Nutzer, der das Script ausführt, administrative Rechte hat.

    Code-Beispiel aus der Hilfe Datei..

    [autoit]

    If IsAdmin() Then MsgBox(0, "", "Admin-Rechte erkannt.")

    [/autoit]

    Mit #RequireAdmin kannst du administrative Rechte "anfordern" (Nutzer muss dem ggf. zustimmen).

  • und wie mache ich das auf einer remote maschiene??

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von subzero007 (4. März 2010 um 15:03)

  • Ich habe noch ein Bug endeckt....
    Wo ich nicht herausfinden kann woher das kommt?

    also so sieht meine listview aus:

    host|Administrators|UserAccount|Host\ServerAdmin|
    host|Administrators|UserAccount|Host\user2|
    host|Administrators|UserAccount|Domain\User1|
    host|Administrators|Group|Domain\Domain Admins|


    Aber tatsächlich habe ich 2 weitere gruppen die er irgendwie verschluckt.. was mache ich falsch?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • könntest du mal aufhören alle halbe stunde hier n neues problem reinzuposten?
    jetz haste 5 probleme auf 5 posts aufgeteilt in nem thread der gerademal 3 Stunden offen is.
    wie soll man sich da noch auskennen.
    is jetz nich bös gemeint aber so nen Saustall liest sich doch keiner gerne durch.

    Editier lieber mal den ersten Post und fass dein zeug zusammen, dann kann man dir auch vernünftig helfen.

    Also:

    woher haste denn die ganzen Objekt befehle?
    haste das selber erarbeitet oder aus nem anderen script übernommen?

    wenn ich bei google: $objWMIService. autoit eingebe dann komme ich auf folgenden thread.
    http://www.autoitscript.com/forum/index.php?showtopic=66606
    im 2ten post dadrin is ne udf die sich genau nach dem anhört was du da so rumbastelst:
    http://www.autoitscript.com/forum/index.php?showtopic=29404&hl=CompInfo

    hilft dir das weiter?

    • Offizieller Beitrag

    Musst deinen Pfad noch wieder anpassen!

    Spoiler anzeigen
    [autoit]

    #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>

    [/autoit] [autoit][/autoit] [autoit]

    $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)

    [/autoit] [autoit][/autoit] [autoit]

    $Inputcn = GUICtrlCreateInput("msgmsma1", 32, 480, 170, 23)
    $Insert = GUICtrlCreateButton("Hinzufügen", 42, 510, 130, 17, $WS_GROUP)
    $del = GUICtrlCreateButton("Löschen", 42, 530, 130, 17, $WS_GROUP)

    [/autoit] [autoit][/autoit] [autoit]

    ;$stop = GUICtrlCreateButton("Stop", 32, 513, 75, 17, $WS_GROUP)
    $Export = GUICtrlCreateButton("Export", 820, 480, 75, 17, $WS_GROUP)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    Global $FileOpenDialog, $ListViewText, $Text = "", $IP = "", $STATus = "", $result, $hostincsveingetragen
    Global $server, $objWMIService
    Global $oMyError = ObjEvent("AutoIt.Error", "_ErrFunc")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()

    [/autoit] [autoit][/autoit] [autoit]

    Switch $nMsg
    Case $del
    _GUICtrlListView_DeleteAllItems($ListViewhost)
    _GUICtrlListView_DeleteAllItems($Liste)
    Case $Insert
    GUICtrlCreateListViewItem(GUICtrlRead($Inputcn), $ListViewhost)

    [/autoit] [autoit][/autoit] [autoit]

    Case $Export
    _export()

    [/autoit] [autoit][/autoit] [autoit]

    Case $GUI_EVENT_CLOSE
    Exit
    Case $Hostladen
    _load()
    Case $Checkall11

    [/autoit] [autoit][/autoit] [autoit]

    _check()
    Case $CheckUser
    _userinfo()
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    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]

    [/autoit] [autoit][/autoit] [autoit]

    $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 & '\ccstore') Then
    $re = Membership_Administrators_Local($server)
    ConsoleWrite('!' & $server & ' = ' & $re & @CRLF)
    EndIf
    ;~ If FileExists('\\' & $server & '\c$\winnt\system32\') Then Membership_Administrators_Local($server)
    Next
    EndFunc ;==>_check

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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"
    If Not IsObj($objWMIService) Then Return -1
    $colItems = $objWMIService.ExecQuery("Select SID from Win32_Group WHERE Domain='" & $srv & "'", "WQL", 0x30)

    [/autoit] [autoit][/autoit] [autoit]

    If Not IsObj($colItems) Then Return -2
    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)

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;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

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_userinfo

    [/autoit] [autoit][/autoit] [autoit]

    Func _export()
    $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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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)

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func _ErrFunc()
    ConsoleWrite("err.windescription: " & $oMyError.windescription & ' für Server = ' & $server & @CRLF)
    EndFunc ;==>_ErrFunc

    [/autoit]
  • Danke Danke...

    Funktioniert auch super.....

    aber einen letzten fehler habe ich was ich nicht rauskriege...??


    also so sieht meine listview aus:

    host|Administrators|UserAccount|Host\ServerAdmin|
    host|Administrators|UserAccount|Host\user2|
    host|Administrators|UserAccount|Domain\User1|
    host|Administrators|Group|Domain\Domain Admins|


    Aber tatsächlich habe ich 2 weitere gruppen in der Admingroup die er irgendwie verschluckt.. was mache ich falsch?
    Oder wo ist der fehler?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."