Jump to content

thumb

Members
  • Gesamte Inhalte

    376
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von thumb

  1. Hallo zusammen,

     

    folgendes VBScript löscht die URL für das automatische Konfigurationsscript und entfernt den Haken für den Proxyserver.

     

    Vielleicht kannst Du es verwenden, bzw. anpassen.

     

    Grüße, thumb

     

    Const HKEY_CURRENT_USER = &H80000001
    
    strComputer = "."
    Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
    
    strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings"
    
    strValueName = "ProxyEnable"
    dwValue = 0
    objRegistry.SetDWORDValue HKEY_CURRENT_USER, strKeyPath, strValueName, dwValue
    
    strValueName_ = "AutoConfigURL"
    strgValue = ""
    objRegistry.SetStringValue HKEY_CURRENT_USER, strKeyPath, strValueName_, strgValue

  2. Hallo Chris.m,

     

    ich habe in meiner Test.LOG folgenden Inhalt:

     

    [24.10.2007 16:43:56] [info] [pta_merge_alternatives.pta_merge_alternatives:int!merge_view()] Datenbank gis - Alternative "|1Engineering Design|PLAN_12889" - Projekt/Planung "487656 - 62_AUG_Rinaustr.": Konflikte gefunden, daher kein Merge möglich.
    [24.10.2007 16:43:56] [info] [pta_merge_alternatives.pta_merge_alternatives:int!merge_view()] Datenbank gis - Alternative "|2Engineering Design|PLAN_12889" - Projekt/Planung "487656 - 62_AUG_Rinaustr.": Konflikte gefunden, daher kein Merge möglich.
    [24.10.2007 16:43:56] [info] [pta_merge_alternatives.pta_merge_alternatives:int!merge_view()] Datenbank gis - Alternative "|3Engineering Design|PLAN_12889" - Projekt/Planung "487656 - 62_AUG_Rinaustr.": Konflikte gefunden, daher kein Merge möglich.
    [24.10.2007 16:43:56] [info] [pta_merge_alternatives.pta_merge_alternatives:int!merge_view()] Datenbank gis - Alternative "|4Engineering Design|PLAN_12889" - Projekt/Planung "487656 - 62_AUG_Rinaustr.": Konflikte gefunden, daher kein Merge möglich.
    [24.10.2007 16:43:56] [info] [pta_merge_alternatives.pta_merge_alternatives:int!merge_view()] Datenbank gis - Alternative "|5Engineering Design|PLAN_12889" - Projekt/Planung "487656 - 62_AUG_Rinaustr.": Konflikte gefunden, daher kein Merge möglich.
    [24.10.2007 16:43:56] [info] [pta_merge_alternatives.pta_merge_alternatives:int!merge_view()] Datenbank gis - Alternative "|6Engineering Design|PLAN_12889" - Projekt/Planung "487656 - 62_AUG_Rinaustr.": Konflikte gefunden, daher kein Merge möglich.
    [24.10.2007 16:43:56] [info] [pta_merge_alternatives.pta_merge_alternatives:int!merge_view()] Datenbank gis - Alternative "|7Engineering Design|PLAN_12889" - Projekt/Planung "487656 - 62_AUG_Rinaustr.": Konflikte gefunden, daher kein Merge möglich.
    [24.10.2007 16:43:56] [info] [pta_merge_alternatives.pta_merge_alternatives:int!merge_view()] Datenbank gis - Alternative "|8Engineering Design|PLAN_12889" - Projekt/Planung "487656 - 62_AUG_Rinaustr.": Konflikte gefunden, daher kein Merge möglich.
    [24.10.2007 16:43:56] [info] [pta_merge_alternatives.pta_merge_alternatives:int!merge_view()] Datenbank gis - Alternative "|9Engineering Design|PLAN_12889" - Projekt/Planung "487656 - 62_AUG_Rinaustr.": Konflikte gefunden, daher kein Merge möglich.

     

    Lege das VBS Script mal direkt auf C:\, die auszuwertende LOG Datei ebenfalls. Der Aufruf ist richtig: VBSCRIPT LOGFILE

     

    Das Script sucht das "|" und ":" als Trennzeichen, sieht Deine Logdatei nicht so aus, wie die obige, geht das schief.

     

    Gruß, THUMB

  3. Tach auch,

     

    das kriegst Du mit VBS ohne große Schwierigkeiten hin. Guck mal hier, ich habe für mal so was ähnliches gemacht, darauf kannst Du vielleicht aufbauen.

     

    Grüße, thumb

     

    '#####################################################################################
    '#####################################################################################
    '#########                                                                   ######### 
    '######### Autor: 	Thomas Schütz                                        #########
    '######### Datum: 	21.08.2003                                           #########
    '######### Script: 	FindFile_1.0.vbs                                     #########
    '#########                                                                   #########
    '#####################################################################################
    '#########                                                                   #########
    '######### Beschreibung:                                                     ######### 
    '#########                                                                   ######### 
    '######### Sucht eine Datei [strSearchFile] im Verzeichnis [strStartPath]    #########
    '######### und allen Unterverzeichnissen. Die Datei wird entweder in *.*.OLD #########
    '######### umbenannt [flgDelete = 0] oder gelöscht [flgDeleten = 1]          #########
    '#########                                                                   #########
    '#####################################################################################
    '#########                                                                   #########
    '######### Änderungen:                                                       #########
    '#########                                                                   #########
    '#########                                                                   #########
    '#########                                                                   #########
    '#####################################################################################
    '#####################################################################################
    
    '#########-Variablen-#################################################################
    
    'Angabe des Einstiegspfades, z.B. "\\SERVER\SHARE\DIR" oder "C:\DIR\DIR"
    
    strStartPath = "\\ws1107070\D$\Documents and Settings\u254189\Desktop\TEST"
    
    'Angabe der zu suchenden Datei, z.B. "test.ini", Groß-/Kleinschreibung wird nicht beachtet!
    
    strSearchFile = "test.ini"
    
    'Angabe ob Datei gelöscht werden soll
    
    flgDelete = 1
    
    '#####################################################################################
    
    'Aufruf der Subroutine
    
    Call CheckFolder(strStartPath)
    
    'Beenden von WSH
    
    WScript.Quit
    
    
    '#########-Routinen-#################################################################
    
    'Subroutine CheckFolder
    
    Sub CheckFolder(instrStartPath)
    
    'Erzeugen des FileSystem Objektes und Zugriff auf das Einstiegsverzeichnis
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    
    Set objFolder = objFSO.GetFolder(instrStartPath)
    
    'Zugriff auf die Dateien im Verzeichnis
    
    Set Files =objFolder.Files
    
    'Überprüfe jede Datei (Groß-/Kleinschreibung wird nicht beachtet!)
    
    For Each File In Files
    
    If UCase(File.Name) = UCase(strSearchFile) Then
    
    
    	'Ist der Delete Flag gesetzt, wird die Datei gelöscht!
    
    	If flgDelete = 1 Then
    
    		File.Delete
    
    	'Ist der Delete Flag NICHT gesetzt, wird die Datei umbenannt!
    
    	Else
    
    		strFilePath = File.Path
    
    		objFSO.MoveFile File, strFilePath & ".OLD" 
    
    	End If
    
    End If
    
    Next
    
    'Rekursiver Aufruf der Subroutine für alle Unterverzeichnisse des Einstiegsverzeichnisses usw.
    
    For Each objNewFolder In objFolder.SubFolders
    
                  CheckFolder objNewFolder
    
    Next
    
    End Sub
    
    

  4. Tach auch,

     

    so, oder so ähnlich könnte man es mit VBS realisieren. Ich bin davon ausgegangen, dass die Zeilen immer den gleichen Aufbau haben. Aufruf des Scriptes: Script.vbs <LogFile>

     

    Das Script schneidet die Zeilen vor dem ersten "|" und nach dem ":" ab und schreibt die Zeilen in ein neues Log (LOG.txt) im Verzeichnis des Scriptes.

     

    Gruß, thumb

     

    Const ForReading = 1
    Const ForWriting = 2
    Const ForAppending = 8
    
    myName = WScript.ScriptFullName
    myPath = Left(myName, InStrRev(myName, "\"))
    
    strFile = WScript.Arguments(0)
    
    strLogFile = myPath & "\" & "LOG.txt"
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.GetFile(strFile)
    If objFile.Size > 0 Then
    
       Set objReadFile = objFSO.OpenTextFile(strFile, 1)
    
       Do While not objReadFile.AtEndOfStream
         strLine = objReadFile.ReadLine()
         strContent_ = Split(strLine, "|")
         strContent__ = trim(strContent_(1)) & trim(strContent_(2))
         strContent___ = split(strContent__, ":")
         strContent____ = trim(strContent___(0))	
         Call WriteToLog(strLogFile, strContent____)
       Loop
    
       objReadFile.Close
    Else
       Wscript.Echo "The file is empty."
    End If
    
    Sub WriteToLog(inFile, inText)
    
    Set objFile = objFSO.OpenTextFile(inFile, ForAppending, True)
    objFile.WriteLine(inText)
    objFile.Close
    
    End Sub
    
    
    
    

  5. Hallo zusammen,

     

    nichts gegen einen MCSE, aber ich denke ein Studium vermittelt grundsätzliche DV Grundlagen, die in einem MCSE-Kurs nicht betrachtet werden. Allerdings ist die Belastung dies neben dem Beruf zu tun enorm. Als ich sah wie viel Zeit meinem Kollegen nach der Arbeit und dem Studium noch bleibt, habe ich mir das anders überlegt ;-) Aber ich bin auch nicht bereit für die Karriere soviel Zeit zu opfern, mit entsprechendem Willen ausgestattet ist das aber zu schaffen.

     

    Was ich als Weiterbildung im Laufe dieses Jahres mache, ist eine Projekt Manager Ausbildung, die immer Blockweise stattfindet. Hier werden neben den Methoden der Projektsteuerung, Konzeption etc. viele SoftSkills vermittelt; Präsentation, Moderation, Konfliktbewältigung etc. Nach meinen Erfahrungen sind diese Fähigkeiten im "gehobenen Dienst" (klingt ****, aber ihr wisst schon...) immer mehr gefragt.

     

    Lasst euch das Studium nicht ausreden, Lernen ist immer gut. Aber bedenkt (Achtung Klug********rmodus!) dass ihr dafür viel Zeit braucht und das man bei einem längeren Studium nie sagen kann, ob nach dem Abschluss der Marktwert wirklich wie prognostiziert höher als ohne Studium ist.

     

    Grüße, thumb

  6. Hallo flixs,

     

    wenn Du in der Subroutine

     

    Sub Log(inLog, inToLog)

    file = inLog

    Const ForAppending = 8

     

    Set fso = CreateObject("Scripting.FileSystemObject")

    Set fi = fso.OpenTextFile(file, ForAppending, true)

    fi.Write (inToLog)

    'fi.WriteLine (inToLog)

    Set fi = Nothing

     

    End Sub

     

    das Hochkomma vor 'fi.WriteLine (inToLog) entfernst und fi.Write (inToLog) löschst, hast Du den Zeilenumbruch.

     

    Wegen User etc. habe ich bisher nichts in der WMI Doku (MSDN) gefunden. Da Script ist zwar nett, aber irgendwie finde ich die Überwachung per Richtlinie fast geschickter, da musst Du keinen Dienst basteln. Ich habe mir LOGPARSER mal angesehen, wenn Du nach dem SELECT Statement nur die Spalten mit Komma getrennt angibst, die Dich interessieren haut es hin. Trotzdem guck ich noch nach dem WMI Objekt, kann aber ein wenig dauern.

     

    Grüße, thumb

  7. Hallo flixs,

     

    ich habe Dir das Script abgeändert, sodass statt MsgBox ein Log geschrieben wird:

     

    strComputer = "."

    myName = WScript.ScriptFullName

    myPath = Left(myName, InStrRev(myName, "\"))

     

    myLog = myPath & "MonitorFiles.log"

     

    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

     

    Set colMonitoredEvents = objWMIService.ExecNotificationQuery _

    ("SELECT * FROM __InstanceOperationEvent WITHIN 10 WHERE " _

    & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _

    & "TargetInstance.GroupComponent= " _

    & "'Win32_Directory.Name=""c:\\\\TEST""'")

     

    Do While TRUE

    Set objEventObject = colMonitoredEvents.NextEvent()

     

    Select Case objEventObject.Path_.Class

    Case "__InstanceCreationEvent"

    Call Log(myLog, "A new file was just created: " & _

    objEventObject.TargetInstance.PartComponent)

    Case "__InstanceDeletionEvent"

    Call Log(myLog, "A file was just deleted: " & _

    objEventObject.TargetInstance.PartComponent)

    End Select

    Loop

     

    Sub Log(inLog, inToLog)

    file = inLog

    Const ForAppending = 8

     

    Set fso = CreateObject("Scripting.FileSystemObject")

    Set fi = fso.OpenTextFile(file, ForAppending, true)

    fi.Write (inToLog)

    'fi.WriteLine (inToLog)

    Set fi = Nothing

     

    End Sub

     

    Inwieweit weitere Informationen, wie Username etc. angegeben werden können muss ich in der Objektbeschreibung nachgucken.

     

    Gruß, thumb

     

    PS: Ja, mach Dich schlau in Scripting, da braucht es nicht unbedingt ´ne Schulung, guck mal im MS Scripting Center: Script Center: Getting Started

     

    Es lohnt sich, seit dem ich ein wenig scripten kann, ist das Leben leichter!

  8. Hallo flixs,

     

    Du startest den Code auf dem Server der das zu überwachende Verzeichnis beherbergt. Das Script muss immer laufen, ich habe das mal als Dienst implementiert (mit srvany.exe), habe schon danach gesucht, aber bisher noch nicht gefunden.

     

    Grüße, thumb

     

    PS: Deine LOGPARSER Lösung funktioniert ja auch wie ich sehe. Verwende mal statt "SELECT *", "SELECT EventLog", dann sollte nur noch eine Spalte in Deinem Log stehen. Wen dem so ist, kannst Du die Spalten die Du haben willst durch ein Komma getrennt angeben, also "SELECT Spalte1, Spalte2, Spalte3". So ist es jedenfalls in SQL und das tool verwendet anscheinend SQL Syntax.

  9. Hallo lefg,

     

    probiere es mal damit:

     

    set host=%0\..\host.txt

    for /f %%i in (%host%) do (ping -n 1 %%i | find "Antwort" > nul ) && (@echo %%i ist online >>%0\..\ResultOnline.txt) || (@echo %%i ist offline >>%0\..\ResultOffline.txt)

    pause

     

    ACHTUNG: Von for /f %% bis >>%0\..\ResultOffline.txt) ist es eine Zeile, also insgesamt sind es drei.

     

    Das @echo musst Du dann durch den Befehl Deiner Wahl ersetzen.

     

    Viele Grüße, thumb

     

    PS: Ach ja, in der Datei HOST.TXT stehen die Rechner, die Du anpingen willst.

    PSS: Noch was, je nach Sprache musst "Antwort" durch "Reply" ersetzen.

  10. Hallo zusammen,

     

    das WMI Script überwacht ein Verzeichnis und gibt beim Löschen und beim Erstellen von Dateien in einem Verzeichnis (C:\Scripts) entsprechende Meldungen aus. Das Script ist aus dem MS Scripting Repository, Scripting Guy ....oder der Ecke...., weiss nicht mehr genau woher.

     

    Grüße, thumb

     

    strComputer = "."

    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

     

    Set colMonitoredEvents = objWMIService.ExecNotificationQuery _

    ("SELECT * FROM __InstanceOperationEvent WITHIN 10 WHERE " _

    & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _

    & "TargetInstance.GroupComponent= " _

    & "'Win32_Directory.Name=""c:\\\\scripts""'")

     

    Do While TRUE

    Set objEventObject = colMonitoredEvents.NextEvent()

     

    Select Case objEventObject.Path_.Class

    Case "__InstanceCreationEvent"

    Wscript.Echo "A new file was just created: " & _

    objEventObject.TargetInstance.PartComponent

    Case "__InstanceDeletionEvent"

    Wscript.Echo "A file was just deleted: " & _

    objEventObject.TargetInstance.PartComponent

    End Select

    Loop

     

    PS: Statt der Echos musst Du eine kleine Subroutine schreiben, die in ein Log schreibt. Wenn Du Probleme haben solltest, melde Dich.

  11. Hallo zusammen,

     

    alternativ ein kleines VB-Script zum ermitteln des Buchstabens:

     

    Const DriveTypeCDROM = 4

     

    Set objFS = Wscript.CreateObject("Scripting.FileSystemObject")

    Set objDrives = objFS.Drives

     

    For Each Drive in objDrives

     

    If Drive.DriveType = DriveTypeCDROM Then

     

    Wscript.Echo Drive.DriveLetter

    End If

     

    Next

     

    Gruß thumb

     

    PS: Hier die möglichen DriveTypes:

     

    0: t = "Unknown"

     

    1: t = "Removable"

     

    2: t = "Fixed"

     

    3: t = "Network"

     

    4: t = "CD-ROM"

     

    5: t = "RAM Disk"

  12. Hallo zusammen,

     

    ich baue mit gerade sehr umständlich ein Programm, welches einer externen USB-HDD immer den gleichen Laufwerksbuchstaben zuweist. D.h. ein Dienst prüft beim Anschluss der USB-HDD, ob u.U. durch den User zuvor ein anderes Gerät angeschlossen wurde und den präferierten LW-Buchstaben vewendet, wenn ja, wird dieser freigegeben, an die USB-HDD vergeben und dem User Gerät wird der nächste freie LW-Buchst. zugeordnet. Das Programm ist in Delphi programmiert und verwendet DISKPART. Das ganze funktioniert zwar, aber ich finde, es ist gefrickelt. So, lange Rede, kurzer Sinn: Hat einer von Euch ein Script, Dienst, Programm etc. welches die Funktion zu Verfügung stellt, ohne DISKPART zu verwenden und dort über das Abgreifen von Strings hantiert?

     

    Danke und Gruß,

    THUMB

  13. Hi Tacher,

     

    Guck mal, hier habe ich eine Ausgabe der Netzwerkkarten Caption eingebaut, sodass Dir nun angezeigt wird, für welche Karten der WINS gesetzt wird. In der FOR Schleife wird dann nur für die angegebene Karte (in meinem Falle "[00000001] Broadcom NetXtreme Gigabit Ethernet for hp") der WINS gesetzt. Hier musst Du dann die von Dir gewünschte Karte eintragen.

     

    Gruß THUMB

     

    PS: Die MsgBox musst Du natürlich im Betrieb entfernen, sie ist nur da, um Dir die NIC Beschreibung auszugeben, um den Namen in die IF-Abfrage zu übernehmen.

     

     

     

    strComputer = "."

    Set objWMIService = GetObject("winmgmts:" _

    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

     

    Set colNetCards = objWMIService.ExecQuery _

    ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

     

    For Each objNetCard in colNetCards

    MsgBox objNetcard.Caption

     

    If objNetcard.Caption = "[00000001] Broadcom NetXtreme Gigabit Ethernet for hp" Then

     

    strPrimaryServer = "192.168.1.100"

    strSecondaryServer = "192.168.1.200"

     

    objNetCard.SetWINSServer strPrimaryServer, strSecondaryServer

    End If

     

    Next

  14. Hallo Tacher,

     

    Du kannst die TCP/IP Eigenschaften, also auch den WINS für jede NIC konfigurieren.

     

    Die Zeile ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

    wählt alle NICs aus für die IP enabled ist. Diese musst Du abändern dass nur die von Dir gewünschte NIC ausgewählt wird. Entweder schon in der WMI Abfrage, oder erst in der FOR Schleife die die Collection durchsucht.

     

    Gruß THUMB

×
×
  • Neu erstellen...