Network Testing Companion

Das NetworkTestingCompanion ist ein PowerShell-Modul, welches das Skype for Business Online Network Assessment Tool hinter einer grafischen Oberfläche versteckt und weitere Tests ausführt. Ein Screencapture habe ich auf einer Folie der Ignite 2018 erstmalig gesehen und mittlerweile ist das Tool zum Download auf der PowerShell Gallery bereitgestellt. Schauen wir und mal genauer an, was das Tool so macht.

Die Oberfläche

Ehe ich die Installation und den Start beschreibe, zeige ich ihnen erst mal ein Bild, welches sie nach der erfolgreichen Einrichtung sehen:

Realisiert wird die GUI per PowerShell und so kann ich gut nachschauen, welche Tests im Hintergrund durchgeführt werden. Neben der Anzeige eines Splash-Screens während der Check und einem Update-Check passieren folgende Aktionen

  • Windows Operating System
    Über "[System.Environment]::OSVersion" und "[System.Environment]::Is64BitOperatingSystem" sammelt
  • Internet Connection
    Über "System.Net.Sockets.TCPClient" und "$Socket.BeginConnect($variableHash.InternetTestIp, 443, $null, $null)" wird eine direkte Verbindung zu der hinterlegten IP-Adresse "13.107.64.2" gemacht.
  • Certified Device
    Die Liste der Audio-Geräte wird mit "$usbAudio = Get-WmiObject Win32_PnPEntity | Where-Object {$_.Service -eq 'usbaudio' -and $_.Status -eq "OK"}" geladen und dann durch die DLL "Deviceparserstandalone.dll" mit dem Aufruf von "[SkypeHelpers.CQTools.DeviceParser+Audio]::IsCertified" ausgewertet.
  • Assessment Tool
    In dem 26MB großen Download ist das Skype for Business Online Network Assessment Tool mit enthalten, da mit diesem dann die Audio-Tests durchgeführt werden
  • Connectivity Test
    Hinter diesem großen grünen "Start"-Button verbirgt sich einfach ein Aufruf des Skype for Business Online Network Assessment Tool mit nachfolgender Auswertung der CSV-Datei. Also nicht viel anders als mein End2End für Skype for Business Network Assessment-Script

Insofern ist das neue Skype for Business Online Network Assessment Tool gar nicht mal viel mehr als das bekannte Skype for Business Online Network Assessment Tool.

Einrichtung

Wenn sie dieses Werkzeug auf ihrem Computer installieren wollen, dann benötigen Sie einfach nur eine PowerShell, die aber leider als Administrator gestartet werden muss. Das Modul wird nämlich in Verzeichnis "C:\Program Files\WindowsPowerShell\Modules\NetworkTestingCompanion" installiert. Der Test ist also nur bedingt für Endanwender geeignet. Sie starten also eine PowerShell als Administrator und geben dann folgendes ein:

# Installieren des Moduls von der PowerShell Gallery
install-module -name networktestingcompanion -Verbose


# Optional Import des Moduls
Import-Module NetworkTestingCompanion

#Aufruf der GUI
Invoke-NetworkTestingClient

Es ist tatsächlich so einfach, wenn Sie Administrator sind und ins Internet dürften und natürlich der Quelle vertrauen.

So einfach die Installation zusätzlicher Module per PowerShell Gallery und anderer Quellen ist, so kritisch sehe ich aber auch dieses Einfallstor. Sie laden Code aus einer Quelle, die nur bedingt vertrauenswürdig ist. Ich bin gespannt, ab wann ein Modul unerwünschte Dinge macht oder sie nach einem Kennwort fragt, welches es dann direkt veruntreut. Nicht jeder schaut sich den Code an und versteht was drin ist

Die PS1M-Datei können Sie noch mit jedem Editor anschauen aber der Inhalt der "DeviceParserStandalone.dll" bleibt verborgen. Die Datei ist nicht mal digital signiert.

Kritikpunkte

Das Modul addiert nicht nur ein Commandlet sondern gleich eine ganze Menge von neuen Befehlen, die das Hauptmodul aufruft.

PS C:\> Get-Command -Module NetworkTestingCompanion

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Get-ToolRegistryEntries                            1.5.2      NetworkTestingCompanion
Function        Invoke-ActionButton                                1.5.2      NetworkTestingCompanion
Function        Invoke-AudioTest                                   1.5.2      NetworkTestingCompanion
Function        Invoke-CalculateEstimatedTime                      1.5.2      NetworkTestingCompanion
Function        Invoke-CheckCertifiedEndpoint                      1.5.2      NetworkTestingCompanion
Function        Invoke-CheckToolInstall                            1.5.2      NetworkTestingCompanion
Function        Invoke-ConnectivityTest                            1.5.2      NetworkTestingCompanion
Function        Invoke-InternetConnectionTest                      1.5.2      NetworkTestingCompanion
Function        Invoke-NetworkAssessmentToolServicing              1.5.2      NetworkTestingCompanion
Function        Invoke-NetworkTestingClient                        1.5.2      NetworkTestingCompanion
Function        Invoke-NetworkTestingCompanionAutoUpdate           1.5.2      NetworkTestingCompanion
Function        Invoke-NetworkTestingCompanionCleanup              1.5.2      NetworkTestingCompanion
Function        Invoke-NewRunspace                                 1.5.2      NetworkTestingCompanion
Function        Invoke-ProcessAudioResults                         1.5.2      NetworkTestingCompanion
Function        Invoke-ToolCreateShortcuts                         1.5.2      NetworkTestingCompanion
Function        Set-ToolRegistryEntries                            1.5.2      NetworkTestingCompanion

Allerdings werden die meisten Nutzer wirklich nur die GUI mit "Invoke-NetworkTestingClient" starten. Ich hätte die anderen Commandlets als privat markiert, damit sie nicht eigenständig aufgerufen werden können. Zumal die meisten Commandlets dann ohne den richtigen Zusammenhang nur einen Fehler werfen.

Der zweite Kritikpunkt ist natürlich die Benennung der Comandlets. Die Empfehlung lautet ja, das nach dem Verb (Invoke, Get, Set, New) und dem Bindestrich ein Präfix für das Produkt kommt. Wir kennen das ja von Get-AzureAD*, Get-CS*, Get-MSOL* und anderen Modulen. Schlimm genug, dass die Exchange Entwickler sich nicht dran halten. Das dürfte aber auch daran liegen, dass damals im Jahr 2007, als Exchange die erste Anwendung war, die PowerShell genutzt hat und das PowerShell-Team einfach noch nicht die Richtlinien entsprechend aufgesetzt hat. Aber heute im Jahr 2018 sollte es doch selbstverständlich sein, dass die Commandlets zum Modul passende benannt sind. Wenn der Name "Networktestingcompanion" zu lang ist, dann wäre ein NTC als Abkürzung immer noch besser gewesen als wilde Namen, die ein höheres Risiko für einen Konflikt darstellen.

Einschätzung

Es ist ein nettes Tool mit einer einfachen GUI. Aber den richtig großen Mehrwert kann ich da nicht erkennen. Wenn es nun eine ClickToRun-Applikation wäre, die ein Anwender ohne Admin-Rechte von einem Webserver einfach starten könnte, wäre ich begeistert. So ist es eine schöne Oberfläche über zwei triviale Abfragen und den Aufruf eines alten Bekannten. Gerade aus dem Skype for Business Network Assessment Tool könnte viel mehr gemacht werden. Da gibt es schon einige andere nette Tools wie z.B. den Network Assessor von MVP Kollege James Cussen

Oder Sie integrieren das Tool in ihre Monitorig-Lösung, wie ich es mit PRTG gemacht habe

Weitere Links