gmail-mails-aelter-als-x-tage-automatisch-loeschen-labels-banner-nong-vang-427138-unsplash-s

Alte Mails automatisch löschen

Im vorletzten Artikel habe ich über das Aufräumen von Speicherplatz in GMail gesprochen. Es ging darum, Mail-Anhänge herunterzuladen und damit besonders große Speicherfresser loszuwerden. Der heutige Artikel wird primär aufräumen, weniger den Fokus auf Mailgröße.

Es geht im Detail darum, alte Mails loszuwerden, flexibel konfigurierbar. GMail selbst löscht Mails nur aus dem Papierkorb automatisch – Mails älter als 30 Tage werden dauerhaft gelöscht. Leider wird diese Funktionalität nicht für alle anderen Mails angeboten. Dies lässt sich jedoch nachrüsten, mit Google Apps Scripts, einer eigenen Programmiersprache von Google, ähnlich Javascript.

Ziel soll es sein, alte Mails bestimmter Labels automatisch nächtlich löschen zu lassen. Dabei lassen sich die Labels und die Anzahl der Tage für jedes Label beliebig einstellen. Die Reinigung kann entweder manuell oder eben täglich ausgeführt werden, wie es eben gerade gebraucht wird.

Das Skript und die Nutzung

🔶🔷 Das Skript könnt ihr hier öffnen 🔷🔶

Es basiert auf einem Skript von labnol.org, wurde von mir aber stark erweitert. Nachfolgende die Schritt-für-Schritt-Anleitung, wie ihr das Skript für euer GMail einrichtet:

  1. Wartet ein paar Sekunden, bis die Editor-Seite mit dem Skript fertig geladen ist.
  2. Erstellt euch in diesem Editor eine eigene Kopie des Skripts via: Datei -> Kopie erstellen bzw. File -> Make a copy. Dadurch wird in eurem Google Account, in eurem Speicherplatz eures Google Skript Editors eine Kopie erstellt.
    Datenschutz-Disclaimer an dieser Stelle, obwohl hoffentlich eindeutig: Ich verarbeite keinerlei Daten von euch, ich erhalte in keinster Weise Zugriff auf euer GMail-Konto, ich kann nicht auf eure Skripte zugreifen, mit der Kopie des Codes ist das Skript in eurem privaten Bereich/Account.
  3. Ihr könnt das Skript via File -> Make a Copy auch erst in euren Google Account kopieren und dann fortfahren. Das kann auch Probleme lösen, wenn Google meckert: „Die Anmeldung mit Google ist für diese App vorübergehend deaktiviert“ usw.
  4. Startet Run -> Run function -> Initialize: Hierbei wird ein Popup von euch die Berechtigungen erfragen („Review permissions“), die das Skript braucht. Es öffnet sich dann ein Popup, ihr wählt den gewünschten GMail Account aus -> setzt fort mit „Erweitert“/“Advanced“ -> Sicherheitshinweis bestätigen -> Rechte mit „Erlauben“/“Allow“ bewilligen, fertig eingerichtet.
    Genau genommen wird das Bearbeiten eurer GMail Daten bewilligt, was zum automatischen Löschen eurer Mails nötig ist. Keine Sorge, hier passiert kein Mist, kein Datenscreening, der komplette Code ist unten oder im Skriptfenster selbst für euch einsehbar. 
    Die erteilten Berechtigungen könnt ihr jederzeit im Sicherheitscheck „Zugriff durch Drittanbieter-Apps“ nachsehen:
    gmail-mails-aelter-als-x-tage-automatisch-loeschen-labels-permissions
  5. Folgende Funktionsweise:
    Ganz oben die Variablen PURGE_LABELS und PURGE_CATEGORIES enthalten jeweils, Komma getrennt, alle Labels bzw. Kategorien jeweils mit der Anzahl an Tagen hinter dem Doppelpunkt, alles in einem paar geschweifte Klammern.
    var PURGE_LABELS = { „Auto“: 2000, „Deals“: 365 }
    würde demnach im Label Auto alle Mails, die älter sind als 2000 Tage und alle Mails innerhalb von Deals älter als 1 Jahr, löschen.
    var PURGE_CATEGORIES = { „Social“: 1000, „Updates“: 2000, „Promotions“: 3000 } löscht Mails der Kategorien „Soziale Netzwerke“, „Benachrichtigungen“ und „Werbung“.
    Mehr zum Thema Labels vs. Kategorien und wie die korrekten Namen der eigenen Labels aussehen, findet ihr unten im nächsten Absatz.
    gmail-mails-aelter-als-x-tage-automatisch-loeschen-labels-vs-categories
  6. Die Zeile var TEST_PURGE = „yes“; bestimmt, ob die Ausführungen nur testen, also keine Mails tatsächlich löschen. Bei „yes“ wird ein Durchgang simuliert, über den Logger (STRG+Enter oder View->Logs) erhaltet ihr dann alle Infos der Ausführung. Wird hier ein beliebiger anderer Wert eingetragen, z.B. „no“, werden Mails auch gelöscht.
  7. Legt nun also los, schreibt die PURGE_LABELS / PURGE_CATEGORIES für eure Zwecke um (es geht auch nur 1 Element, ohne Komma am Ende dann), belasst TEST_PURGE erst einmal auf „yes“ und startet das Skript über Run -> Run functions -> purgeGmail.
    Eine gelbe Infomeldung über dem Code zeigt euch, dass das Tool läuft, solange es läuft. Verschwindet die Info, könnt ihr euch im Logger (STRG+Enter oder View->Logs) die Ergebnisse anschauen. Enthalten sind Infos wieviele Konversationen pro Label gefunden wurden und wieviele Mails gelöscht worden wären. Es sind meist mehr Mails als Konversationen, da GMail Mails mit gleichem Betreff einer Konversation zuordnet. Mögliches Resultat im Logger:
gmail-mails-aelter-als-x-tage-automatisch-loeschen-logs-mit-labels-und-kategorien
Die neue Skript Version bereinigt sowohl eigene Labels als auch Google’s Kategorien

Label, Kategorie, interne Namen, was ist was?

Die lesbaren Bezeichner „Posteingang“, „Gesendet“ usw. haben eigentlich andere interne Namen, die von meinem Skript korrekt angesprochen werden müssen. Das Skript unterscheidet in Labels und Kategorien und die internen Namen sind meist englisch oder anders formatiert. Das kann zuweilen etwas verwirrend sein. Daher hier eine schnelle Übersicht über die vordefinierten Elemente:

  • Posteingang: Label „inbox“
  • Markiert: Label „starred“
  • Zurückgestellt: Label „snoozed“
  • Wichtig: Label „important“
  • Gesendet: Label „sent“
  • Entwürfe: Label „draft“
  • Alle E-Mails: Label „all“
  • Soziale Netzwerke: Kategorie „social“
  • Benachrichtigungen: Kategorie „updates“
  • Foren: Kategorie „forums“
  • Werbung: Kategorie „promotions“

Bei den eigenen Labels müsst ihr ein bisschen aufpassen, wie die interne Benennung tatsächlich lautet. Leerzeichen sowie einige Sonderzeichen werden intern durch ein Minus ersetzt, das Ausrufezeichen bleibt aber beispielsweise so:

  • Eigenes Label „Invest & Mehr“: Label „invest—mehr“
  • Eigenes Label „Wohnung!“: Label „wohnung!“
Dankenswerterweise zeigt euch GMail den internen Namen eurer Labels oben in der Suchleiste an, wenn ihr diese öffnet:

gmail-mails-aelter-als-x-tage-automatisch-loeschen-label-namen
Bei den internen Namen der Labels werden Leerzeichen und manche Sonderzeichen durch Minus ersetzt

400 – Limit

Das Bild zeigt direkt die Schwäche des Skripts: Es kann pro Ausführung maximal 400 Konversationen löschen, welche jedoch beliebig viele E-Mails pro Konversation enthalten können. Das Limit ist technisch bedingt durch die API – bis 500 konnte ich gehen, aber ich wollte einen Sicherheitspuffer. Hier kann man mit „paged calls“ ansetzen, also mehrere Aufrufe nacheinander triggern, was jedoch in diesem Aufbau, in dem mehrere Labels bearbeitet werden, zu komplex ist.

In einem Label mit zigtausenden alten Mails, muss das Skript also erst mehrfach durchlaufen. Wenn ein Durchlauf in einem Label mehr als 400 Konversationen findet, wird eine weitere Suche nach der Bereinigung durchgeführt und die Restanzahl angezeigt. Ist diese erneut 400, sind es wohl noch mehr Konversationen und weitere Durchläufe sind nötig.

2 Möglichkeiten:

  1. Wenn ihr es eilig habt, dann könnt ihr einfach mehrfach nacheinander Run -> Run function -> purgeGmail ausführen. Jede Ausführung aber zu Ende arbeiten lassen, bis die gelbe Notification weg ist. Prüft ruhig nach jedem Durchlauf euer GMail parallel, dass dort die Anzahl der Mails weniger wird.
  2. Installiert das Skript einfach über Run function -> Install und lasst es in Ruhe. Nachts wird es ausgeführt und löscht 400 Konversationen. Das macht es nun jede Nacht und irgendwann sind dann alle Mails weg, egal wieviele es waren.

Code

Hier jetzt noch der Code – wenn es Fragen gibt, schreibt ein Kommentar oder mir eine Mail und wir klären das. Die API-Dokumentation von Google ist ein guter Anlaufpunkt bei Fragen zu den Google-basierten Funktionen.

Der Quelltext hier hier einsehbar: Code anzeigen

// Hint: Execution will generate logs for you to see whats going on - view logs with CTRL+Enter or View -> Logs at any time (while execution or after it, Logs are saved until the next run).

// format needed = { "Barketing": 800, "Auto & mehr": 365 } - would delete mails from label "Barketing" if older than 800 days and from "Auto & mehr" if older than 1 year.
// If you encounter problems detecting label mails: If your Label contains whitespace or other non-alphabetical characters, please go to GMail, open (click on) your label and look into the search bar. 
// Here you will see your label name that you need to put in here. It might be "test-label" for "Test Label" or "car---more" for "Car & more". For me, both label naming types worked well but maybe it helps in special cases.
var PURGE_LABELS = { "Deals": 2000 }
// You also can purge predefined GMail categories like "Werbung", "Soziale Netzwerke", "Foren" and "Benachrichtigungen", but you have to you english keywords for these.
// Use it as with labels, but use these keywords, combined with a number of days: "Werbung"="Promotions"; "Foren"="Forums"; "Soziale Netzwerke"="Social"; "Benachrichtigungen"="Updates"
var PURGE_CATEGORIES = { "Social": 1000, "Updates": 2000, "Promotions": 3000 }

// set this to "yes" to run a purge without deleting emails. The function will just detect how many emails would be affected and print the count to Logger (CTRL+ENTER or View -> Logs)
// assign any other value to run a real purge.
var TEST_PURGE = "yes";

/*
  
  For more details, please refer https://it-stack.de/15/08/2018/gmail-mails-aelter-als-x-tage-automatisch-loeschen
  
  Original script from: http://labnol.org/?p=276053
  Modified by: Hannes Schurig (Aug 2018 + Okt 2019), https://it-stack.de
  
  T U T O R I A L
  - - - - - - - - 
  
  Step 1. Update the values of fields PURGE_LABELS, PURGE_CATEGORIES and TEST_PURGE above.
  
  Step 2. Go to Run -> Run function -> Initialize and authorize the script.
  
  Step 3.  Go to Run -> Run function -> Install to install the script. It will be executed every night.
  Step 3.1 Or run it manually: Run -> Run function -> purgeGmail
  
  Also, you may go to Run -> Uninstall to stop the purging script.

*/

function Intialize() {
  return;
}

function Install() {
  // start right after install, wait a minute to take effect, view Logs (CTRL+Enter) to look for execution
  ScriptApp.newTrigger("purgeGmail")
           .timeBased()
           .at(new Date((new Date()).getTime() + 1000*10))
           .create();
  // install for daily execute (at night around 1am)
  ScriptApp.newTrigger("purgeGmail")
           .timeBased().everyDays(1).create();
}

function Uninstall() {
  var triggers = ScriptApp.getScriptTriggers();
  for (var i=0; i<triggers.length; i++) {
    ScriptApp.deleteTrigger(triggers[i]);
  }
}

function purgeGmail() {
  for(var label in PURGE_LABELS) {
    var purgeDays = PURGE_LABELS[label];
    executePurge(label, purgeDays, "label");
  }
  for(var category in PURGE_CATEGORIES) {
    var purgeDays = PURGE_CATEGORIES[category];
    executePurge(category, purgeDays, "category");
  }
}

function executePurge(elem, purgeDays, type) {
  var count = 0,maxAge = new Date();
    maxAge.setDate(maxAge.getDate() - purgeDays); 
    var purgeBefore  = Utilities.formatDate(maxAge, Session.getScriptTimeZone(), "yyyy-MM-dd"),
        search = type + ":" + elem + " before:" + purgeBefore;
    
    Logger.log("Looking at " + type + " '" + elem + "' and purge mails older than " + purgeDays + " days (before " + purgeBefore + ")...");
    if (TEST_PURGE === "yes") {
      Logger.log("Test_purge active, no e-mails will be deleted. You can view the amount of affected mails in the Logger (CTRL+ENTER).")
    }
    
    try {
      var threads = GmailApp.search(search, 0, 400);
      
      Logger.log("Threads: "+threads.length);
      if (threads.length == "400") {
        Logger.log("Maximum threads (and possibly more applicable mails) for " + type + " '" + elem + "' and " + purgeDays + " days, run it multiple times to purge all.");
      }
      
      for (var i=0; i<threads.length; i++) {
        var messages = GmailApp.getMessagesForThread(threads[i]);
        for (var j=0; j<messages.length; j++) {
          var email = messages[j];       
          if (email.getDate() < maxAge) {
            if (TEST_PURGE !== "yes") {
              email.moveToTrash();
            }
            count++;
          }
        }
      }
      
      Logger.log(type + " '" + elem + "' purged, deleted " + count + " mails.");
      
      if (threads.length == 400) {
        var threads2 = GmailApp.search(search, 0, 400);
        Logger.log("Remaining threads after this purge: "+threads2.length);
        if (threads2.length == "400") {
          Logger.log("Maximum threads of 400 (and possibly more applicable mails) for " + type + " '" + elem + "' and " + purgeDays + " days even after this purge, run it multiple times to purge all.");
        }
      }
      
    } catch (e) {
      Logger.log("Error: " + e);
    }
    
    Logger.log("############################### " + elem + " done");
}

excel-diagramme-farblich-gestalten-nach-werten-beispiel-diagramm-teaser

Einleitung

excel-diagramme-farblich-gestalten-nach-werten-zellgestaltungEs ist eine uralte Tradition: Farben zur Verdeutlichung oder zur Unterstützung einsetzen, beispielsweise um Werte implizit mit Bewertung zu versehen. Rote Werte sind häufig negativ, sprechen für fehlerhafte oder kritische Werte; Grün hat oft eine positive Bedeutung.
In Excel können solche farbigen Hervorhebungen bei Hunderten von Zahlwerten die Übersicht erleichtern und Kopfschmerzen reduzieren 😉 Dank der Funktion „Bedingter Formatierung“ und ihren vielen vordefinierten Regeln ist es auch super einfach, Zahlwerte mit Farben, Icons und Balken zu verdeutlichen.

Was ist nun aber mit Diagrammen, vor allem Balkendiagrammen? Dort wäre eine Einfärbung abhängig von zugrundliegenden Werten ebenfalls sinnvoll:
excel-diagramme-farblich-gestalten-nach-werten-beispiel-diagramm
Von Hause aus bietet Excel keine werteabhängigen Farbbalken in Diagrammen an. Also wird getrickst:
Weiterlesen

Das Titelthema der (mittlerweile nicht mehr) aktuellen c’t: „Das verrät Ihr PC“. Auf der DVD enthalten ist sowohl die große Toolsammlung DART 2.0 als auch das bootbare Forensik Linux System DEFT. Das Paket aus beiden Produkten steht auch hier als Download bereit.
Das habe ich mir mal angeschaut.

DART 2.0 startet mit einem übersichtlichen Launcher, der Zugriff auf alle Tools gibt und diese kategorisch sortiert und listet. Alle Tools sind sofort startbar, entweder als Admin oder als aktueller User.
dart-2.0-forensik-toolbox-launcher

Aquire

„Aquire“ enthält die Unterkategorien „Burn“, „Copy“ und „Image“. In diesen stecken verschiedenste Tools wie DeepBurner, ForensicCopy, TeraCopy, FastCopy, DumpIt, RamCapture, PZenDump und mehr. Diese überspringe ich jetzt mal, das ist weniger spannend.

Data Recovery

Das Menü „Data Recovery“ enthält die Tools Undelete-360, PhotoRec und TestDisk. Die letzten beiden Tools sind Kommandozeilenbasiert, die 64bit Version stürzte auf meinem PC ab und die 32bit hatte Probleme auf meine Partitionen zuzugreifen. Auch so ist das eine sehr dürftige Auswahl an den reich verfügbaren Recovery Freewares, die es so gibt.

Forensics

Das „Forensics“ Menü ist in die Kategorien „Browser“, „E-Mail“, „Encryption“, „File“, „Hashing“, „Instant Messaging“, „Peer to Peer“ und „Windows Forensics“ aufgeteilt.

Browser:
Mit fast 30 Tools lässt sich so ziemlich jedes Browser Detail analysieren. Vom Verlauf über Cookies, Cache bis hin zu den Favouriten lässt sich alles auslesen und anzeigen. (Hinweis: Passwort-Angelegenheiten kommen in einer extra Kategorie weiter unten)
dart-2.0-forensik-toolbox-browser

Encryption:
Die vier enthaltenen Tools können sowohl verschlüsselte Dateien, Depots als auch ganze versteckte und verschlüsselte Partitionen erkennen und Informationen (Algorithmus, Größe, Signatur usw.) anzeigen. Da ich keine verschlüsselten Daten direkt auf meinem PC habe, kann ich hier auch nicht viel zeigen.
dart-2.0-forensik-toolbox-encryption

File:
Fünf Tools analysieren Datei- und Ordnereigenschaften. Die Ordneranalyse-Tools sind ziemlich nutzlos, schaut lieber in das Menü „Incident Resp.“ -> „System Info“, dort findet ihr TreeSize Free, welches wesentlich besser Partitionen und Ordnerbäume untersucht und grafisch anzeigt.
dart-2.0-forensik-toolbox-file

Hashing:
Enthält 4 Tools zum Erstellen, Vergleichen und Exportieren von Hashes.
dart-2.0-forensik-toolbox-hashing

Instant Messaging:
Die 4 Tools analysieren die Spuren und Nachrichten von Skype, Windows Live Messenger, ICQ und Yahoo Messenger; wer auch immer letztere noch nutzen mag 😉 Da ich nur Skype habe und das praktisch nicht nutze, zeige ich hier nur die 2 Skype Tools. Diese listen alle Kontakte und ihre Nachrichten mit zusätzlichen Informationen auf. Erstaunlich, dass Skype immernoch nicht die Kommunikationsdaten schützt sondern sie in einer normalen, lesbaren Datenbank liegen lässt…
dart-2.0-forensik-toolbox-messenging

Windows Forensics:
Diese Unterkategorie hat noch einmal 2 Unterkategorien: „Registry“ und „Printer Spooler“. Insgesamt befinden sich fast 50 Tools in dieser Kategorie. Diese analysieren die Registry, Druckjobs, Verknüpfungen, Prefetch Dateien, verschiedenste Logdateien des Systems (bei Abstürzen des Systems oder von Programmen), Datenstreams, Windows Aktionen (geöffnete Dateien, Programme) und vieles mehr. Komischerweise findet sich hier auch ein Programm namens MyLastSearch, welches die Suchanfragen der üblichen Browser listet. Dieses müsste eigentlich eher in die „Browser“ Kategorie.
dart-2.0-forensik-toolbox-windows-forensics

Peer to Peer:
Die sechs Tools bieten verschiedene Funktionen um Daten der Programme Limewire, Frostwire, Gigatribe und eMule zu analysieren. Da ich keinerlei P2P Programme besitze, kann ich hier auch nichts zeigen.

E-Mail:
Die fünf enthaltenen Programme ermöglich das Auslesen und Reparieren von Mail-Client-Datenbanken (Outlook, Thunderbird, Windows Mail). Außerdem zeigen sie Anhänge und Statistiken dieser Datenbanken gesondert an. Da ich keinerlei E-Mail Programme installiert habe, kann ich das hier nicht weiter zeigen.

Incident Response

Das Menü bietet ein paar Tools für Antivirenmaßnahmen und Systemanalyse. Die Kategorien „Antivirus“ und „System Info“ bieten über 30 Tools daür.

Antivirus:
Standalone Antivirentools können sehr brauchbar sein, wenn man einen vermutlich verseuchten PC vor der Nase hat. Diesen sollte man dann im abgesicherten Modus ohne Netzwerktreiber starten, um keine Kommunikation der Viren nach Außen zu ermöglichen. Damit ist aber auch das Herunterladen und Aktualisieren von Antivirensoftware verbaut. Fertig installierte Antivirenprogramme lösen das erste Problem. Nach ersten Scans könnte man den PC auch mit Internet starten und danach die Tools aktuelle Definitionen laden lassen, um noch einmal alle Scans laufen zu lassen. Die 2 enthaltenen Programme ClamWin und aswMBR bieten diese Updatefunktionalitäten an.
Die anderen Tools der Kategorie untersuchen Prozesse, Systemdateien, Booteinträge und weitere infizierbare Orte nach typischen Eigenschaften von Rootkits und Malware.

dart-2.0-forensik-toolbox-antivirus-definitions dart-2.0-forensik-toolbox-antivirus-scan

System Info:
Mit der Unterkategorie „Running Processes“ helfen die Tools Prozesse, Partitionen, Systemeigenschaften, Hard- und Software zu analysieren.
dart-2.0-forensik-toolbox-system-info

Networking

Wie der Name schon sagt finden sich hier Programme zum Analysieren, Mitschneiden und Manipulieren von Netzwerktraffic, Konfigurieren von Netzwerkverbindungen sowie das Untersuchen und auch Durchsuchen von Netzwerken.
dart-2.0-forensik-toolbox-networking

Password

In diesem Menü sind die Passwort-Tools der Toolsammlungen Nirsoft (30 Tools) und SecurityXploded (20 Tools) enthalten, sowie Advanced Password Recovery und Phrozen Pwd Recovery. Es gibt viele Tools zum Auslesen der lokalen Passwörter, jedoch fehlen mir Tools für einige Softwareprodukte wie die Office Programme, Archivprogrammen und Ähnliche, die oft mit Passwörtern zu tun haben.
dart-2.0-forensik-toolbox-password

Visualize

Die drei Kategorien „Graphics“, „Multimedia“ und „Office“ enthalten viele Tools wie XnView, Photo Studio, ExifDataView, Media Player Classic, VLC, InstalledCodec, SumatraPDF, Universal Viewer und ein paar Datenbankbetrachter. Besonders spannend ist das nicht.

Utility

Auch in dieser Kategorie gibt es viele wichtige aber nicht besonders spannende Tools: SearchMyFiles, 7-Zip, UniExtract, CamStudio Recorder, GSplit, Notepad++, TightVNC Viewer, Eraser, WipeDisk, USBWriteProtect.

Fazit

Wie immer bei Toolsammlungen muss man sich die einigen wenigen Tools, die wirklich gut funktionieren, gut zu bedienen sind und möglichst viel Zweck erfüllen, merken. Die Tools funktionierten teilweise ganz gut und lieferten viele Informationen, wirklich überrascht wurde ich jedoch von keinem Tool. Die meisten Informationen sind relativ basic und lassen sich – wenn auch mit wesentlich mehr Arbeit – auch aus den Programmen selbst oder mit Windows Boardmitteln auslesen.

windows-explorer-delete-saved-ftp-password-credentials-userdata
FTP Accounts/Passwörter des Windows Explorers löschen:
Registry (regedit.exe) starten und nach

HKEY_CURRENT_USER/Software/Microsoft/FTP/Accounts/[server]/[account]

ausschau halten.
Für ein Passwort Reset (zum Beispiel wenn „Passwort speichern“ aktiv aber neues Passwort) den „Password“ Datensatz in [account] löschen.
Um den kompletten Account mit allen Daten zu löschen entweder [server] komplett oder [account] löschen.

Mit einem PowerShell Script möchte ich alle Login/Logoff basierten Events eines Computers auflisten und gut lesbar in eine Textdatei schreiben. In meinem konkreten Fall filtere ich nur das Entsperren heraus.

Hier das PowerShell Script:

# Connects to the security eventlog of a remote computer and retrieves successful login events ( event ID 528 ) and what type of login took place 
# Information about login types found at http://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventid=528 
# 
# 22.09.2009 Konráð Hall 
# 2013 - edited by Hannes Schurig for newer systems (vista/7/server 2k8) and filter in german/english
cls

"Starte Tool..."
 
$events =  Get-EventLog -ComputerName Hannes-PC -LogName "Security" -newest 1000 | Where { $_.eventid -eq 4624 }

# english: $logonTypeText = "Logon Type:    "
# german:
$logonTypeText = "Anmeldetyp:			"

"Starte Eventverarbeitung..."

foreach ($event in $events) {
    
    if (($event.message | Select-String $logonTypeText+"2")){ 
        "LogonType 2 (Interactive Login);"+ $event.TimeGenerated.DateTime + ";" +$event.UserName >> "C:\logins.txt"
    } <#
    if (($event.message | Select-String $logonTypeText+"3")){ 
        "LogonType 3 (Network Login)    ;"+ $event.TimeGenerated.DateTime + ";" +$event.UserName >> "C:\logins.txt"
    } 
    if (($event.message | Select-String $logonTypeText+"4")){ 
        "LogonType 4 (Batch Login)      ;"+ $event.TimeGenerated.DateTime + ";" +$event.UserName >> "C:\logins.txt"
    } 
    if (($event.message | Select-String $logonTypeText+"5")){ 
        "LogonType 5 (Service Login)    ;"+ $event.TimeGenerated.DateTime + ";" +$event.UserName >> "C:\logins.txt"
    } #>
    if (($event.message | Select-String $logonTypeText+"7")){ 
        "LogonType 7 (Computer Unlocked);"+ $event.TimeGenerated.DateTime + ";" +$event.UserName >> "C:\logins.txt"
    } <#
    if (($event.message | Select-String $logonTypeText+"8")){ 
        "LogonType 8 (Network Cleartext Login);"+ $event.TimeGenerated.DateTime + ";" +$event.UserName >> "C:\logins.txt"
    } 
    if (($event.message | Select-String $logonTypeText+"9")){ 
        "LogonType 9 (NewCredentials)   ;"+ $event.TimeGenerated.DateTime + ";" +$event.UserName >> "C:\logins.txt"
    } 
    if (($event.message | Select-String $logonTypeText+"10")){ 
        "LogonType 10 (RDP Login)       ;"+ $event.TimeGenerated.DateTime + ";" +$event.UserName >> "C:\logins.txt"
    } 
    if (($event.message | Select-String $logonTypeText+"11")){ 
        "LogonType 11 (Cached Credentials Login);"+ $event.TimeGenerated.DateTime + ";" +$event.UserName >> "C:\logins.txt"
    } #>
}

original script by Konrad Hall

Das, ursprünglich von Konrad Hall stammende, Script habe ich etwas angepasst. In Zeile 9 muss der gewünschte Computername eingefügt werden.

Um die Funktionsweise zu verstehen sollte man in Erfahrung bringen welche verschiedenen Anmeldeereignisse und Anmeldetypen es gibt und welche EventIDs sie haben. Es gibt unterschiedliche EventIDs in XP/Server<2k3 und Vista/7/Server>2k3.
Ein Beispiel: erfolgreiche Anmeldungen werden mit der EventID 528 in Server 2k3 und mit 4624 in Server 2k8 geloggt.
tecchannel schreibt zu den vielen IDs auch noch etwas.
Mit ultimatewindowssecurity.com lässt sich das aber überblicken. Meine Beispiele beziehen sich auf Windows 7.

Wenn man sich alle Events des Security Logs anzeigen lässt, ist das eine ganze Menge:
anmeldeereignisse-mit-PowerShell-auslesen-all-events

Es kommt also drauf an, was man loggen möchte. Dann kommt es drauf an, welche EventIDs dieses Event auslöst. Daraus bastelt man sich den EventID Filter.
Mit

| Where { $_.eventid -eq 4624 }

(528 bei XP/2k3) am Ende des Befehls filtere ich erfolgreiche Anmeldungen heraus:
anmeldeereignisse-mit-PowerShell-auslesen-all-logins-4624

Das gleiche geht bei Abmeldungen mit der EventID 4634 (538 bei XP/2k3):

| Where { $_.eventid -eq 4634 }

oder eine Art Range Filter für Login und Logoff:

| Where { $_.eventid -ge 4624 -AND $_.eventid -le 4634 }

anmeldeereignisse-mit-PowerShell-auslesen-logins-and-logoffs

Nun sind also alle Events gefiltert. Diese werden dann in dem Script ab Zeile 17 noch einmal gefiltert. Hier kommen die Anmeldetypen ins Spiel. Diese sind aber bei allen Windows Versionen gleich.
Beispiel: „Normale“ Anmeldungen haben den Typ 2, Netzwerkanmeldungen 3, Entsperren die 7.

An dieser Stelle könnt ihr das Script beliebig anpassen um nur einen oder bestimmte Anmeldetypen zu filtern.
In dem Beispielscript oben sind alle Anmeldetypen bis auf den normalen („interaktiven“) Login auskommentiert. Hier 2 Beispiellogs für Entsperrungen und Entsperrungen+Logins:
anmeldeereignisse-mit-PowerShell-auslesen-logs
Achtung! Auf englischen Systemen müsst ihr die Kommentierung von Zeile 11 und 13 vertauschen, da sonst die Filterung Exceptions schmeißt. Ich habe das ja schon soweit vorbereitet.

Mit diesen Grundlagen könnt ihr beliebig in den Computerlogs (es gibt ja nicht nur die Security Logs) lesen, filtern, exportieren und mehr.

Folgendes Problem habe ich letztens mit dem Android Market gehabt: die Ansicht „Meine Apps“ zeigte nur noch 2 Apps an, alle anderen installierten Apps wurde nicht mehr angezeigt. Mehrmaliges Öffnen der „Meine Apps“ Ansicht hat daran nichts geändert.

Folgende Lösungen schlage ich vor:

  • Zuerst die Lösung, die bei mir funktioniert hat:
    Geht in die Einstellungen -> Anwendungen -> Anwendungen verwalten -> Alle Anwendungen -> Market und betätigt die 2 Buttons „Daten löschen“ und „Cache löschen“. Öffnet die „Meine Apps“ Übersicht und das Problem ist im besten Fall schon gelöst.

  • Die wohl einfachste Lösungsmöglichkeit wäre wohl: Neustart des Android Systems. Handy aus und wieder an. Ich weiß aber nicht ob das funktioniert.
  • Eine weitere mögliche Alternative wäre den Market Prozess neuzustarten. Wobei das beim Handyneustart sicher auch schon der Fall ist. Das ginge zum Beispiel mit dem Prozess-Manager von Astro, einem kostenlosen Datei-Manager-App.

Und wenn einer der Tipps gut lief dann sollte es wieder in etwa so aussehen:

Ich war ein großer Freund von Google Notebook. Notizen online, schnell und einfach erstellt, immer verfügbar. Dass der Google Dienst nicht mehr weiterentwickelt wird ist schade, ein Ersatz musste her.
Momentan nutze ich Catch.


Auf Catch.com könnt ihr euch anmelden. Die Webseite ähnelt der von Google Notebook nach dem Login. Neue Notizen erstellen per Klick, Notizen bearbeiten, Auto-Speichern alle paar Sekunden, Tags vergeben, Kommentare schreiben, Notizen per URL sharen, alles inklusive.

Und was darf in der modernen Gesellschaft nicht fehlen? Ein App für den Dienst! „Cache Notes“ heißt das Android App und ist unterwegs immer mit dabei. Es bietet sogar einiges mehr als die Webseite selbst.
Die Übersicht offenbart neben den normalen Textnotizen noch weitere Features:
Kameranotiz (live Foto schießen), Albumnotiz (bestehendes Bild aus dem Handy wählen), Sprachnotiz (live sprechen und hochladen) und eine Erinnerungsnotiz, eine Notiz mit Weckerfunktion.

Ich bin mit Catch zufrieden. Einige Kleinigkeiten müssen da noch überarbeitet werden aber das passiert bestimmt Stück für Stück Nutzt es sonst noch jemand? Kennt jemand Alternativen? Web und android-fähig natürlich.