Text aufbereiten zur Weiterverarbeitung

  • Hallo zusammen,

    Ich möchte die Ausgabe von psservice.exe config (siehe Spoiler) weiterverarbeiten.
    Dabei habe ich noch keinen blassen Schimmer, wie ich den Text in eine verwertbare Form bekomme (nicht die Umsetzung mit AutoIt) :

    Spoiler anzeigen

    Benötigen würde ich die folgenden Angaben (jeweils die Angaben zum passenden Service Namen) :

    SERVICE_NAME: Alerter
    START_TYPE : 4 DISABLED
    DISPLAY_NAME : Alerter
    DEPENDENCIES : LanmanWorkstation
    SERVICE_START_NAME: NT AUTHORITY\LocalService

    Falls mir da jemand weiterhelfen könnte wäre ich sehr froh!

    Gruss bankrupty

    2 Mal editiert, zuletzt von bankrupty (19. März 2007 um 14:25)

  • Hallo,

    als einen ersten Erfolg habe ich das so rausbekommen: (Ausgabe 1)

    Spoiler anzeigen

    ich benötige es aber in diesem Format: (Ausgabe 2)

    Spoiler anzeigen
    Code
    AClient;4 DISABLED;c:\Appl\altiris\aclient\ACLIENT.EXE -service;Altiris Client Service;LocalSystem

    d.h. Zeile (Ausgabe 1) 1-5, 6-10, 11-15, ... sollen in einer Zeile (Ausgabe 2) durch ; getrennt aneinandergereiht werden.
    Und ich weiss beim besten Willen nicht, wie ich da ansetzen muss

    Gruss Günter

    • Offizieller Beitrag

    HI,

    versuch mal:

    Spoiler anzeigen
    [autoit]

    #include <file.au3>
    #include <Array.au3>
    Global $lines_A
    Global $filePath = @ScriptDir & '\read.txt'
    Global $newfilePath = @ScriptDir & '\read.txt' ; wenn es dieselbe sein soll :)
    Global $countCRLF = 5
    Global $newFile[1]

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

    If Not _FileReadToArray($filePath, $lines_A) Then
    MsgBox(4096, "Error", " Error reading log to Array error:" & @error)
    Exit
    EndIf
    For $i = 1 To $lines_A[0] Step $countCRLF
    _ArrayAdd($newFile, $lines_A[$i] & ';' & $lines_A[$i + 1] & ';' & $lines_A[$i + 2] & ';' & $lines_A[$i + 3] & ';' & $lines_A[$i + 4])
    Next
    ;_ArrayDisplay($newFile, "")
    _FileWriteFromArray($newfilePath, $newFile, 1)

    [/autoit]

    So long,

    Mega

  • Hi Mega,

    öhmmm.... bist Du sicher, dass Dein Script so läuft?

    Zum einen läuft _ArrayAdd beim letzten Element auf einen Bereichsüberlauf-Error und zum anderen käme insgesamt wohl eher nicht genau das heraus, was der OP eigentlich wollte.

    Ich bin verblüfft, dass der OP meinte, das Script laufe zufriedenstellend.

    Macht mich nicht fertisch! :D

  • Ich habe einfach Dein Script kopiert, habe die Beispielsdatei vom OP übernommen, und dabei stürzt das Script ab.

    Und es kommt, wenn ich das Script etwas anpasse, auch nicht das heraus, was der OP eigentlich wollte.

    Ziemlich wackelige Angelegenheit. :-O

    Aber na gut..... "lösungsorientiert".... ;)

    Faszinierend! :D

  • Ja, ich habe eine spezielle Anforderung:

    Wir müssen auf allen Servern das lokale Administrator (und alle anderen auch) Passwort periodisch ändern. Um nicht zu viel Arbeit damit zu haben, möchte ich mit dem Script auch gleich die evtl. unter dem Account laufenden Services und Scheduled Tasks ändern, damit möglichst alles in einem Rutsch geändert ist und nichts vergessen wird.

    Spoiler anzeigen


    Auslesen der vorhandenen Informationen:

    Code
    schtasks.exe /query /fo CSV /v > Infos_zu_Scheduled_Tasks.txt
    Code
    psservice config > Infos_zu_allen_Services.txt

    Konfiguration der betroffenen Services, Tasks und ändern des Passworts:

    Code
    sc config <servicename> obj= %computername%\Administrator password= password
    Code
    SCHTASKS /Change /U username /P password /TN taskname
    Code
    net user Benutzername  neues_Kennwort

    Das Script ist noch im Anfangsstudium und ich möchte möglichst viel davon selbst erstellen, damit ich auch Autoit besser kennenlerne.

    Sollte jemand natürlich Ansätze haben, die mir das ganze erleichtern, bin ich nicht abgeneigt.

    bankrupty

    Einmal editiert, zuletzt von bankrupty (8. März 2007 um 08:06)

  • Hallo,

    So hier nun mein "fertiges" Script:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <file.au3>
    #include <Process.au3>

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

    Global $lines_A
    Global $my_admin
    Global $my_services
    Global $my_schedtsk
    Global $my_schedtask
    Global $countCRLF = 5
    Global $newFile[1]
    Global $my_service = 'C:\Temp\psservices.log'
    Global $my_service2 = 'C:\Temp\psservices.csv'
    Global $my_schedtk = 'C:\Temp\schedtasks.csv'
    Global $my_schedtk2 = 'C:\Temp\schedtasks.txt'
    Global $my_tmpfile = 'C:\Temp\temp.txt'
    Global $my_logfile = 'C:\Temp\changelog.txt'
    Global $my_chgpwini = @ScriptDir & '\chg-pw.ini'
    Global $my_user1 = IniRead(@ScriptDir & '\chg-pw.ini', 'Accounts', 'Username_1', '')
    Global $my_user2 = IniRead(@ScriptDir & '\chg-pw.ini', 'Accounts', 'Username_2', '')
    Global $my_passwrd1 = IniRead(@ScriptDir & '\chg-pw.ini', 'Accounts', 'Password_1', '')
    Global $my_passwrd2 = IniRead(@ScriptDir & '\chg-pw.ini', 'Accounts', 'Password_2', '')
    Global $count1 = StringLen($my_user1)
    Global $count2 = StringLen($my_user2)

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

    DirCreate($SysDrv & '\Temp')
    FileDelete($my_logfile)

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

    FileInstall('c:\temp\psservice.exe', 'C:\Temp\psservice.exe', 1)
    FileInstall('c:\temp\schtasks.exe', 'C:\Temp\schtasks.exe', 1)

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

    $logline1 = ' *'
    $logline2 = StringLen($logline1)
    $logline3 = StringLen(@ComputerName)
    $logline4 = StringRight($logline1, $logline2-$logline3)
    _FileWriteLog($my_logfile, '=======================================================================')
    _FileWriteLog($my_logfile, '* *')
    _FileWriteLog($my_logfile, '* ' & @ComputerName & $logline4)
    _FileWriteLog($my_logfile, '* *')
    _FileWriteLog($my_logfile, '=======================================================================')
    _FileWriteLog($my_logfile, '')

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

    ; Scheduled Tasks
    RunWait(@ComSpec & ' /c ' & 'C:\Temp\schtasks.exe /query /fo CSV /v >' & $my_schedtk)
    ; all Services
    RunWait(@ComSpec & ' /c ' & $SysDrv & '\Temp\psservice config >' & $my_service)

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

    Dim $my_svc
    If Not _FileReadToArray($my_service, $my_svc) Then
    MsgBox(4096,'Error', ' Error reading log to Array (' & $my_service & ') error : ' & @error, 20)
    Exit
    EndIf

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

    For $x = 1 to $my_svc[0]
    $svcStrg1 = StringMid($my_svc[$x],2,7)
    If $svcStrg1 = 'ERVICE_' Or $svcStrg1 = 'START_T' Or $svcStrg1 = 'BINARY_' Or $svcStrg1 = 'DISPLAY' Or $svcStrg1 = 'SERVICE' Then
    $test2 = StringReplace(StringReplace(StringReplace($my_svc[$x], ' ', ''), ' ', ' '), ': ', ';')
    $test1 = Stringsplit($test2, ';')
    $file = FileOpen($my_tmpfile, 1)
    If $file = -1 Then
    MsgBox(0, 'Error', 'Unable to open file.')
    Exit
    EndIf
    FileWriteLine($my_tmpfile, $test1[2])
    FileClose($file)
    Else
    EndIf
    Next

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

    If Not _FileReadToArray($my_tmpfile, $lines_A) Then
    MsgBox(4096, 'Error', 'Error reading log to Array (' & $my_tmpfile & ') error : ' & @error, 20)
    Exit
    EndIf
    For $i = 1 To ($lines_A[0] - 1) Step $countCRLF
    _ArrayAdd($newFile, $lines_A[$i] & ';' & $lines_A[$i + 1] & ';' & $lines_A[$i + 2] & ';' & $lines_A[$i + 3] & ';' & $lines_A[$i + 4])
    Next
    _FileWriteFromArray($my_service2, $newFile, 1)

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

    If Not _FileReadToArray($my_service2, $my_admin) Then
    MsgBox(4096, 'Error', 'Error reading log to Array (' & $my_service2 & ') error : ' & @error, 20)
    Exit
    EndIf
    For $j = 1 To $my_admin[0]
    $my_adm = StringSplit($my_admin[$j], ';')
    If $my_adm[5] = $my_user1 Then
    MsgBox(0, 'test', $my_adm[5])
    Else
    EndIf
    Next

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

    FileDelete($my_tmpfile)

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

    ; Services to change
    _FileWriteLog($my_logfile, '')
    _FileWriteLog($my_logfile, 'Changed Service(s) :')
    _FileWriteLog($my_logfile, '-------------------------------')
    If Not _FileReadToArray($my_service2, $my_services) Then
    MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
    Exit
    EndIf
    For $k = 1 to ($my_services[0]-1)
    $my_search1 = StringSplit($my_services[$k], ';')
    If $my_search1[5] <> 'LocalSystem' Then
    If StringRight($my_search1[5], $count1) = $my_user1 Then
    _FileWriteLog($my_logfile, '"' & $my_search1[1] & '" - "' & $my_search1[5] & '"')
    RunWait(@ComSpec & ' /c ' & @WindowsDir & '\system32\sc config ' & $my_search1[1] & ' obj= ' & @ComputerName & '\' & StringRight($my_search1[5], 9) & ' password= ' & $my_passwrd1 & '> C:\temp\log1.txt')
    ;[SC] ChangeServiceConfig SUCCESS
    _FileWriteLog($my_logfile, 'sc config ' & $my_search1[1] & ' obj= ' & @ComputerName & '\' & StringRight($my_search1[5], $count1) & ' password= ' & '<password>')
    _FileWriteLog($my_logfile, _FileReadLine1('C:\temp\log1.txt'))
    RunWait(@ComSpec & ' /c ' & @WindowsDir & '\system32\net stop ' & $my_search1[1] & '> C:\temp\log1.txt')
    _FileWriteLog($my_logfile, _FileReadLine1('C:\temp\log1.txt'))
    RunWait(@ComSpec & ' /c ' & @WindowsDir & '\system32\net start ' & $my_search1[1] & '> C:\temp\log1.txt')
    _FileWriteLog($my_logfile, _FileReadLine1('C:\temp\log1.txt'))
    _FileWriteLog($my_logfile, '')
    EndIf
    Else
    EndIf
    Next

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

    ; Scheduled Tasks to change
    _FileWriteLog($my_logfile, '')
    _FileWriteLog($my_logfile, 'Changed Scheduled Task(s) :')
    _FileWriteLog($my_logfile, '-------------------------------')
    If Not _FileReadToArray($my_schedtk, $my_schedtask) Then
    MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
    Exit
    EndIf
    For $k = 1 to ($my_schedtask[0]-1)
    If StringLeft($my_schedtask[$k], 1) = '"' Then
    $my_search2 = StringSplit(StringReplace(StringReplace($my_schedtask[$k], '","', ';'), '"', ''), ';')
    ;If $my_search2[19] <> 'SYSTEM' Or $my_search2[19] <> 'Run As User' Then
    If StringRight($my_search2[19], $count1) = $my_user1 Then
    _FileWriteLog($my_logfile, '"' & $my_search2[2] & '" - "' & $my_search2[19] & '"')
    RunWait(@ComSpec & ' /c ' & @WindowsDir & '\system32\SCHTASKS /Change /S ' & @ComputerName & ' /RU ' & $my_user2 & ' /RP ' & $my_passwrd1 & ' /TN "' & $my_search2[2] & '" 1> C:\temp\log1.txt 2>&1')
    ;SUCCESS: The parameters of scheduled task "task 1" have been changed.
    _FileWriteLog($my_logfile, 'SCHTASKS /Change /S ' & @ComputerName & ' /RU ' & $my_user2 & ' /RP ' & '<password>' & ' /TN "' & $my_search2[2] & '"')
    _FileWriteLog($my_logfile, _FileReadLine1('C:\temp\log1.txt'))
    _FileWriteLog($my_logfile, '')
    Else
    EndIf
    EndIf
    Next

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

    _FileWriteLog($my_logfile, '')
    _FileWriteLog($my_logfile, 'Changed password for User :')
    _FileWriteLog($my_logfile, '-------------------------------')
    _FileWriteLog($my_logfile, 'net user ' & $my_user2 & ' <password>')
    RunWait(@ComSpec & ' /c ' & @WindowsDir & '\system32\net user ' & $my_user2 & ' ' & $my_passwrd2 & ' 1> C:\temp\log1.txt 2>&1')
    ;The command completed successfully.
    _FileWriteLog($my_logfile, _FileReadLine1('C:\temp\log1.txt'))
    _FileWriteLog($my_logfile, '')

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

    FileDelete('C:\temp\log1.txt')

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

    Func _FileReadLine1($sLogPath)
    Local $sMsg
    Local $hOpenFile
    Local $hReadFile

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

    $hOpenFile = FileOpen($sLogPath, 0)

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

    If $hOpenFile = -1 Then
    SetError(1)
    Return 0
    EndIf

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

    $hReadFile = FileReadLine($hOpenFile, 1)

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

    If $hReadFile = -1 Then
    SetError(2)
    Return 0
    EndIf

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

    FileClose($hOpenFile)
    Return $hReadFile
    EndFunc ;==>_FileReadLine1

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

    und hier die zugehörige INI Datei:

    Spoiler anzeigen

    Sicher nicht an allen Stellen sehr elegant gelöst, erfüllt aber seinen Zweck.
    Falls jemand Verbesserungsvorschläge hat, nehme ich diese gerne an.

    Danke nochmals für die Hilfe bei der Umsetzung

    Gruss bankrupty

    Habe hoffentlich bei der Bereinigung der Firmenspezifischen Informationen, keine Fehler eingebaut

    Einmal editiert, zuletzt von bankrupty (19. März 2007 um 17:05)

  • Das sind genau die Sachen die ich (noch) nicht so im Griff habe.
    Wie würdest du denn dies lösen?

    Gruss bankrupty

    • Offizieller Beitrag

    Hi,

    die Frage ist, was willst du machen?

    [autoit]

    $test2 = StringReplace(StringReplace(StringReplace($my_svc[$x], ' ', ''), ' ', ' '), ': ', ';')
    $test1 = Stringsplit($test2, ';')

    [/autoit]

    Ich meine, du ersetzt so wie es aussieht Leerzeichen durch nichts, : machst du zu ; damit du später stringsplit mit ; machst. :tier:

    Wie sieht denn z.B. eine Zeile aus und wie so soll sie nachher aussehen?

    So long,

    Mega

  • Hallo Mega,

    Der Ausgangspunkt ist:


    Wenn Zeile enthält:

    [autoit]

    If $svcStrg1 = 'ERVICE_' Or $svcStrg1 = 'START_T' Or $svcStrg1 = 'BINARY_' Or $svcStrg1 = 'DISPLAY' Or $svcStrg1 = 'SERVICE' Then

    [/autoit]


    was in dem Ausgangstext den Zeilen 1 , 4 , 6 , 9 , 11 enspricht, dann
    1. lösche (ersetzte) die TABs
    2. ersetze 2 Leerzeichen durch 1 Leerzeichen
    3. ersetze :Leerzeichen durch ; (nötig wegen des Doppelpunktes im Pfad)

    [autoit]


    $test2 = StringReplace(StringReplace(StringReplace($my_svc[$x], ' ', ''), ' ', ' '), ': ', ';')
    $test1 = Stringsplit($test2, ';')

    [/autoit]


    um dann dieses zu erhalten:

    Code
    Alerter;3 DEMAND_START;C:\WINNT\system32\services.exe;Warndienst;LocalSystem


    hoffe dies so ausführlich genug erklärt zu haben?

    Ich weiss, dies ist sicher eleganter zu lösen, aber mit meinem jetzigen Wissen habe ich es so fehlerfrei hinbekommen.

    Gruss bankrupty

  • Musste nach dem ersten Testlauf auf einem Produktivsystem noch eine kleine Änderung durchführen:
    (wird einer Policy mitgegeben, vorher hatte ich immer nur lokal getestet)

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <file.au3>
    #include <Process.au3>

    Global $lines_A
    Global $my_admin
    Global $my_services
    Global $my_schedtsk
    Global $my_schedtask
    Global $countCRLF = 5
    Global $newFile[1]
    Global $my_service = 'C:\Temp\psservices.log'
    Global $my_service2 = 'C:\Temp\psservices.csv'
    Global $my_schedtk = 'C:\Temp\schedtasks.csv'
    Global $my_schedtk2 = 'C:\Temp\schedtasks.txt'
    Global $my_tmpfile = 'C:\Temp\temp.txt'
    Global $my_logfile = 'C:\Temp\changelog.txt'
    Global $my_chgpwini = @ScriptDir & '\chg-pw.ini'
    Global $my_user1 = IniRead(@ScriptDir & '\chg-pw.ini', 'Accounts', 'Username_1', '')
    Global $my_user2 = IniRead(@ScriptDir & '\chg-pw.ini', 'Accounts', 'Username_2', '')
    Global $my_passwrd1 = IniRead(@ScriptDir & '\chg-pw.ini', 'Accounts', 'Password_1', '')
    Global $my_passwrd2 = IniRead(@ScriptDir & '\chg-pw.ini', 'Accounts', 'Password_2', '')
    Global $count1 = StringLen($my_user1)
    Global $count2 = StringLen($my_user2)

    DirCreate($SysDrv & '\Temp')
    FileDelete($my_logfile)

    FileInstall('c:\temp\psservice.exe', 'C:\Temp\psservice.exe', 1)
    FileInstall('c:\temp\schtasks.exe', 'C:\Temp\schtasks.exe', 1)

    $logline1 = ' *'
    $logline2 = StringLen($logline1)
    $logline3 = StringLen(@ComputerName)
    $logline4 = StringRight($logline1, $logline2-$logline3)
    _FileWriteLog($my_logfile, '=======================================================================')
    _FileWriteLog($my_logfile, '* *')
    _FileWriteLog($my_logfile, '* ' & @ComputerName & $logline4)
    _FileWriteLog($my_logfile, '* *')
    _FileWriteLog($my_logfile, '=======================================================================')
    _FileWriteLog($my_logfile, '')

    ; Scheduled Tasks
    RunWait(@ComSpec & ' /c ' & 'C:\Temp\schtasks.exe /query /fo CSV /v >' & $my_schedtk)
    ; all Services
    RunWait(@ComSpec & ' /c ' & $SysDrv & '\Temp\psservice config >' & $my_service)

    Dim $my_svc
    If Not _FileReadToArray($my_service, $my_svc) Then
    MsgBox(4096,'Error', ' Error reading log to Array (' & $my_service & ') error : ' & @error, 20)
    Exit
    EndIf

    For $x = 1 to $my_svc[0]
    $svcStrg1 = StringMid($my_svc[$x],2,7)
    If $svcStrg1 = 'ERVICE_' Or $svcStrg1 = 'START_T' Or $svcStrg1 = 'BINARY_' Or $svcStrg1 = 'DISPLAY' Or $svcStrg1 = 'SERVICE' Then
    $test2 = StringReplace(StringReplace(StringReplace($my_svc[$x], ' ', ''), ' ', ' '), ': ', ';')
    $test1 = Stringsplit($test2, ';')
    $file = FileOpen($my_tmpfile, 1)
    If $file = -1 Then
    MsgBox(0, 'Error', 'Unable to open file.')
    Exit
    EndIf
    FileWriteLine($my_tmpfile, $test1[2])
    FileClose($file)
    Else
    EndIf
    Next

    If Not _FileReadToArray($my_tmpfile, $lines_A) Then
    MsgBox(4096, 'Error', 'Error reading log to Array (' & $my_tmpfile & ') error : ' & @error, 20)
    Exit
    EndIf
    For $i = 1 To ($lines_A[0] - 1) Step $countCRLF
    _ArrayAdd($newFile, $lines_A[$i] & ';' & $lines_A[$i + 1] & ';' & $lines_A[$i + 2] & ';' & $lines_A[$i + 3] & ';' & $lines_A[$i + 4])
    Next
    _FileWriteFromArray($my_service2, $newFile, 1)

    If Not _FileReadToArray($my_service2, $my_admin) Then
    MsgBox(4096, 'Error', 'Error reading log to Array (' & $my_service2 & ') error : ' & @error, 20)
    Exit
    EndIf
    For $j = 1 To $my_admin[0]
    $my_adm = StringSplit($my_admin[$j], ';')
    If $my_adm[5] = $my_user1 Then
    MsgBox(0, 'test', $my_adm[5])
    Else
    EndIf
    Next

    FileDelete($my_tmpfile)

    _FileWriteLog($my_logfile, '')
    _FileWriteLog($my_logfile, 'Changed password for User :')
    _FileWriteLog($my_logfile, '-------------------------------')
    _FileWriteLog($my_logfile, 'net user ' & $my_user2 & ' <password>')
    RunWait(@ComSpec & ' /c ' & @WindowsDir & '\system32\net user ' & $my_user2 & ' ' & $my_passwrd2 & ' 1> C:\temp\log1.txt 2>&1')
    ;The command completed successfully.
    _FileWriteLog($my_logfile, _FileReadLine1('C:\temp\log1.txt'))
    _FileWriteLog($my_logfile, '')

    ; Services to change
    _FileWriteLog($my_logfile, '')
    _FileWriteLog($my_logfile, 'Changed Service(s) :')
    _FileWriteLog($my_logfile, '-------------------------------')
    If Not _FileReadToArray($my_service2, $my_services) Then
    MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
    Exit
    EndIf
    For $k = 1 to ($my_services[0]-1)
    $my_search1 = StringSplit($my_services[$k], ';')
    If $my_search1[5] <> 'LocalSystem' Then
    If StringRight($my_search1[5], $count1) = $my_user1 Then
    _FileWriteLog($my_logfile, '"' & $my_search1[1] & '" - "' & $my_search1[5] & '"')
    RunWait(@ComSpec & ' /c ' & @WindowsDir & '\system32\sc config ' & $my_search1[1] & ' obj= ' & @ComputerName & '\' & StringRight($my_search1[5], 9) & ' password= ' & $my_passwrd1 & '> C:\temp\log1.txt')
    ;[SC] ChangeServiceConfig SUCCESS
    _FileWriteLog($my_logfile, 'sc config ' & $my_search1[1] & ' obj= ' & @ComputerName & '\' & StringRight($my_search1[5], $count1) & ' password= ' & '<password>')
    _FileWriteLog($my_logfile, _FileReadLine1('C:\temp\log1.txt'))
    RunWait(@ComSpec & ' /c ' & @WindowsDir & '\system32\net stop ' & $my_search1[1] & '> C:\temp\log1.txt')
    _FileWriteLog($my_logfile, _FileReadLine1('C:\temp\log1.txt'))
    RunWait(@ComSpec & ' /c ' & @WindowsDir & '\system32\net start ' & $my_search1[1] & '> C:\temp\log1.txt')
    _FileWriteLog($my_logfile, _FileReadLine1('C:\temp\log1.txt'))
    _FileWriteLog($my_logfile, '')
    EndIf
    Else
    EndIf
    Next

    ; Scheduled Tasks to change
    _FileWriteLog($my_logfile, '')
    _FileWriteLog($my_logfile, 'Changed Scheduled Task(s) :')
    _FileWriteLog($my_logfile, '-------------------------------')
    If Not _FileReadToArray($my_schedtk, $my_schedtask) Then
    MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
    Exit
    EndIf
    For $k = 1 to ($my_schedtask[0]-1)
    If StringLeft($my_schedtask[$k], 1) = '"' Then
    $my_search2 = StringSplit(StringReplace(StringReplace($my_schedtask[$k], '","', ';'), '"', ''), ';')
    ;If $my_search2[19] <> 'SYSTEM' Or $my_search2[19] <> 'Run As User' Then
    If StringRight($my_search2[19], $count1) = $my_user1 Then
    _FileWriteLog($my_logfile, '"' & $my_search2[2] & '" - "' & $my_search2[19] & '"')
    RunWait(@ComSpec & ' /c ' & @WindowsDir & '\system32\SCHTASKS /Change /S ' & @ComputerName & ' /RU ' & $my_user2 & ' /RP ' & $my_passwrd1 & ' /TN "' & $my_search2[2] & '" 1> C:\temp\log1.txt 2>&1')
    ;SUCCESS: The parameters of scheduled task "task 1" have been changed.
    _FileWriteLog($my_logfile, 'SCHTASKS /Change /S ' & @ComputerName & ' /RU ' & $my_user2 & ' /RP ' & '<password>' & ' /TN "' & $my_search2[2] & '"')
    _FileWriteLog($my_logfile, _FileReadLine1('C:\temp\log1.txt'))
    _FileWriteLog($my_logfile, '')
    Else
    EndIf
    EndIf
    Next

    FileDelete('C:\temp\log1.txt')

    Func _FileReadLine1($sLogPath)
    Local $sMsg
    Local $hOpenFile
    Local $hReadFile

    $hOpenFile = FileOpen($sLogPath, 0)

    If $hOpenFile = -1 Then
    SetError(1)
    Return 0
    EndIf

    $hReadFile = FileReadLine($hOpenFile, 1)

    If $hReadFile = -1 Then
    SetError(2)
    Return 0
    EndIf

    FileClose($hOpenFile)
    Return $hReadFile
    EndFunc ;==>_FileReadLine1

    [/autoit]


    diese Sektion musste weiter nach oben:

    Spoiler anzeigen
    [autoit]


    _FileWriteLog($my_logfile, '')
    _FileWriteLog($my_logfile, 'Changed password for User :')
    _FileWriteLog($my_logfile, '-------------------------------')
    _FileWriteLog($my_logfile, 'net user ' & $my_user2 & ' <password>')
    RunWait(@ComSpec & ' /c ' & @WindowsDir & '\system32\net user ' & $my_user2 & ' ' & $my_passwrd2 & ' 1> C:\temp\log1.txt 2>&1')
    ;The command completed successfully.
    _FileWriteLog($my_logfile, _FileReadLine1('C:\temp\log1.txt'))
    _FileWriteLog($my_logfile, '')

    [/autoit]

    bankrupty

    Einmal editiert, zuletzt von bankrupty (21. März 2007 um 12:11)