Montag, Januar 18, 2010

Powershell /RegEx / HTML Tag Inhalte

[regex]::matches("<tag>Inhalt</tag>","(Inhalt)").item(0).groups[1].value

Sonntag, Januar 17, 2010

Kurznotiz / StickyNote

Aus der Kategorie,was Sie sich schenken können, ist das kleine schlanke Tool StickyNote von MS.
Es ist mir erst nach vielen Jahren Benutzung des Betriebssystems WIndows XP/Vista aufgefallen.
Insofern ein Grafiktablett verfügbar ist, schreibt man mit dem Stift und löscht mit dem Radierer.
Sprache wird direkt aufgezeichnet.
Alternativen sind von Logitech QuickCam zur Aufzeichnung mit Bild, oder OneNote welches als Favorit sowohl Bild, Ton, Tastatur und Stift aufzeichnen kann.

Samstag, Januar 16, 2010

Powershell und Reguläre Ausdrücke

Die folgenden Beispiele können einfach per Copy&Paste in der Powershell nachvollzogen werden. Die größte Fehlerquelle sind die Tippfehler. Die Beispiele benutzen die Microsoft .Net Klasse für Reguläre Ausdrücke.

Die MSDN Dokumentation enthält hierzu einige Beispiele, die aber leider mit Schreibfehlern versehen sind. Das macht das ohnehin kaum verständlich lesbare Thema noch schwieriger. Hier sind einige Beispiele für die Benutzung in der Powershell:

[regex]::matches("901-333-","^\d{3}").item(0).value # es wird 901 anstatt 901- ausgegeben
[regex]::matches("901-333-","\A\d{3}").item(0).value # es wird 901 anstatt 901- ausgegeen

[regex]::matches("Wir sind die Moorsoldaten und ...","(\w)\1").item(0).value # findet doppelten Buchstaben oo
[regex]::matches("1234 3412","\b(\d{2})(\d{2}) \2\1").item(0).value #Backreferenzen auf zwei Gruppen
[regex]::matches("<tag> text </tag>","<([a-z]+)>[a-z ]+").item(0).value #Backreferenz auf den Tagnamen
[regex]::matches("<tag> text </tag>","(?i)<([a-z]+)>[a-z ]+").item(0).value #s.o., ignore case option
[regex]::matches("<tag> text </tag>","(?i)<.*>").item(0).value #greedy *, geht bis zum letzten >
[regex]::matches("<tag> text </tag>","(?i)<.*?>").item(0).value #lazy ?, geht bis zum ersten >
[regex]::matches("deep","(?<doppel>\w)\k<doppel>").item(0).value #benannte Gruppen mit <>
[regex]::matches("<tag> text </tag>","<(?'gruppe1'\w+)>(?'inhalt'[^<]+</\k'gruppe1'>)").item(0).value #benannte Gruppen mit ''

Donnerstag, Januar 14, 2010

Tools, Werkzeuge, SDK

diskpart.exe
   cmd Tool für Partitionrn, Volumes, Disks, VDisks
powershell.exe
   Vereinigt Skripting, Systemverwaltung, .Net, . Com, WMI, C#,... =Windows Shell
powershell_ise.exe
   powershell Editor
wevtutil.exe
   Tool für die Eventlog-Analyse
wmic.exe
   cmd tool zur Systemsteuerung und Abfrage mit WMI

Mittwoch, Januar 13, 2010

Dateiversion mit wmic ermitteln

Das Fehlerprotololl zeigt einen Anwendungsfehler der dwm.exe im Modul msvcrt.dll an
MSVCRT.dll ist offensichtlich die c++ Runtime, die von mehreren Programmen installiert wurde.
Die diversen Versionen und Verbreiter zeigt folgende Anweisung:

WMIC DATAFILE WHERE "filename='msvcrt' and extension='dll'" get version,name

Services mit \\cmd\wmic abfragen

Ein starkes Tool ist die WMI Abfrage in der CMD Shell.
z.B. kann die Liste der Servicenamen und deren Displaynamen ausgegeben werden:
wmic service where (displayname like "%") get name, displayname