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.
- Export-ModuleMember
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/export-modulemember
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
- Network Assessor for Skype for Business
Online and Microsoft Teams
https://www.myskypelab.com/2017/08/network-assessor-for-skype-for-business.html
https://gallery.technet.microsoft.com/Network-Assessor-for-Skype-27675675
Oder Sie integrieren das Tool in ihre Monitorig-Lösung, wie ich es mit PRTG gemacht habe
Weitere Links
- Skype for Business Online Network Assessment Tool
- End2End für Skype for Business Network Assessment
- NetworkTestingCompanion 1.5.2
https://www.powershellgallery.com/packages/NetworkTestingCompanion/ - M365NetworkTestingTool (Vorgänger
Version)
https://www.powershellgallery.com/packages/M365NetworkTestingTool/1.4.1 - Network Assessor for Skype for Business
Online and Microsoft Teams
https://gallery.technet.microsoft.com/Network-Assessor-for-Skype-27675675