Tag-Archiv für » technet «

21 | 04 | 2017

Ein unschöner, aber wohl unvermeidlicher Schlussstrich unter einem Jahr TechNet-Forum

Geschrieben von um 19:14 Uhr

Seit ziemlich genau einem Jahr bin ich nun wieder im TechNet-Forum aktiv gewesen. Der Ton ist erfreulicherweise viel kollegialer und produktiver geworden, das war früher anders. Allerdings kommt wohl bei jedem der Tag, da gerät man an den Falschen.

Und so bin ich heute quasi doppelt zum Ritter geschlagen worden: Eine Beleidigung und Meldung als Missbrauch:

Mark Minasi sagte mal vor knapp 10 Jahren, die schlimmsten Hasskommentare kämen immer von anonymen Usern. Der Mann hat’s damals schon durchschaut. Hoffentlich folgen die Mods auf TechNet dem Aufruf und bannen mich für immer, dann habe ich wieder mehr Zeit, mein dümmliches Gesülze dort zu verbreiten, wo es keinem weh tut, nämlich hier in meinem eigenen Blog…

Tags » , «

+

10 | 10 | 2016

PowerShell Hack: TechNet-Teilnahme eines Users messen oder eine Übung im Web Grabbing

Geschrieben von um 9:04 Uhr

Wenn man im TechNet-Forum (https://social.technet.microsoft.com/Forums/de-de/home) unterwegs ist, kann man ja Punkte verdienen. Hat man eine Frage beantwortet und hat der Fragesteller das bestätigt, gibt es Punkte. Hat jemand den Post für hilfreich erklärt, gibt’s auch Punkte. Ist man in vielen Microsoft-Technologien unterwegs, möchte man manchmal wissen, wo man denn die meiste Contribution geleistet hat. Das Forumsystem selbst gibt da zwar eine sehr detaillierte Auskunft in Form einer Aktivitäten-History, aber man möchte ja eigentlich einfach nur schnell einen Überblick gewinnen. Und vielleicht auch nicht über sich, sondern auch über andere user. Was liegt an einem verregneten Sonntag also näher, als einfach ein Skript zu schreiben, das die Webseite für einen durchgeht und die Daten einsammelt.

Die Grundlage dafür ist das Cmdlet Invoke-WebRequest, welches ein Objekt vom Typ „Microsoft.PowerShell.Commands.HtmlWebResponseObject“ zurück liefert. Dieses hat eine Eigenschaft „ParsedHtml“, die vom Typ „mshtml.IHTMLDocument2“ ist. Damit wären wir schon fast am Ziel, man muss einfach nur an den Perversitäten der Web-Entwickler und der verschahtelten Struktur der DIV-Tags vorbei kommen. In der Thread-Ansicht zum Beispiel hat die Vorschau auf jeden Beitrag die Klasse „threadsnippet“:

paul_thread_snippet

Den Inhalt bekommt man also mit

$page = Invoke-WebRequest -Uri "https://social.technet.microsoft.com/Forums/en-us/user/threads?user=Paul++Cunningham"
$html = $page.ParsedHtml
$html.all.tags("DIV") | foreach {
    if ($_.className) {
        if ($_.className.Trim() -eq "threadsnippet") {
            $snippet = $_
            foreach ($head in $snippet.all.tags("H3")) {
                $thread_topic = $head.innerText.Trim()
                foreach($link in $head.all.tags("A")) {
                    $thread_link = $link.href
                }
            }
        }
    }
}

Am Ende hat man dann in $thread_topic den Header und in $thread_link den Link zum gesamten Thread. Und so weiter.
Ich habe dafür zwei Skripte geschrieben, die in der PSGallery heruntergeladen werden können:

Export-TechNetContributionToCSV.ps1 geht die Beiträge des angegebenen Users durch und macht daraus eine CSV-Dateie mit diversen Informationen inklusive Links zu den einzelnen Threads. Schauen wir uns zum Beispiel die Contribution des bekannten Exchange-MVP Paul Cunningham an (man beachte die zwei Leerzeichen im TechNet-Usernamen):

tn_paul_export

Ist die CSV fertig, so kann man sie mit Measure-TechNetContribution.ps1 nach Foren oder sogar nach einzelnen Subforen zusammenfassen und, je nach Lust und Laune, tabellarisch oder sonst wie darstellen lassen:tn_paul_measureoder nach Hauptforen gegliedert:

tn_paul_measure_main

So kann man herausfinden, in welchen Wissensgebieten sich z.B. ein Kollege betätigt, der gern im TechNet Forum schreibt.

Tags » , , , , «

+