Als Grundlage für die Ermittlung von Computertypen dient eine Enumeration von Microsoft. Ich übermittle die deutsche Version: Public Enum ChassisTypesGER Sonstiges Unbekannt Desktop Low_Profile_Desktop Pizza_Box Mini_Tower Turm Tragbar Laptop Notebook Hand_gehalten Docking_Station All_in_One Sub_Notebook Platzsparend Lunchbox Hauptsystemgehäuse Erweiterungsgehäuse SubChassis Buserweiterungsgehäuse Peripheriegehäuse Speichergehäuse Rackmontagechassis PC_mit_versiegeltem_Gehäuse Tablette Cabriolet Abtrennbar End Enum Hier die Funktion: ''' <summary> ''' Ermitteln des Computertyps via Powershell ''' </summary> Public Function getComputerTyp() As String Dim Names() As String = [Enum].GetNames(GetType(ChassisTypesGER)) Dim psi As New ProcessStartInfo(), ctStr As String With psi .FileName = "powershell.exe" .Arguments = "Get-CimInstance -ClassName Win32_SystemEnclosure | Select-Object ChassisTypes" .UseShellExecute = False .RedirectStandardOutput = True .RedirectStandardError = True .CreateNoWindow = True ' Fenster unsichtbar halten End With Dim output As New StringBuilder() Dim p As New Process() p.StartInfo = psi p.Start() ' Ausgabe lesen output.AppendLine(p.StandardOutput.ReadToEnd()) ctStr = output.ToString ctStr = getStringBetweenStrings(ctStr, "{", "}", True) ctStr = Names(CInt(ctStr - 1)) p.WaitForExit() Return ctStr End Function und Hilfsfunktion: Public theLastIdx As Integer = 0, thelastIdxL As Integer = 0, thenextIdx As Integer = 0 ''' <summary> ''' String zwischen zwei Strings ''' </summary> ''' <param name="str">der Quell-String</param> ''' <param name="str1">der 1. Begrenzungs-String</param> ''' <param name="str2">der 2. Begrenzungs-String</param> ''' <param name="aFlag">True.. Rückgabe des gesuchten Strings, ''' False.. dito, plus Begrenzungen</param> ''' <param name="fromPos">die Anfangsposition des Suchens</param> ''' <returns></returns> Public Function getStringBetweenStrings(str As String, str1 As String, str2 As String, Optional aFlag As Boolean = False, Optional fromPos As Short = 0) As String Dim st As String, thelastIdx As Short If aFlag Then ' einkürzen um str1 und str2 If str.IndexOf(str1) < 0 Then Return "" st = str.Substring(str.IndexOf(str1) + str1.Length, str.IndexOf(str2) - str.IndexOf(str1) - str1.Length) Return st Else If thelastIdx = 0 Then thelastIdx = str.IndexOf(str1) If thelastIdx < 0 Then Return "" If str.IndexOf(str1, thelastIdx) < 0 Then Return "" st = str.Substring(thelastIdx, str.IndexOf(str2, thelastIdx) - thelastIdx + str2.Length) thelastIdx = str.IndexOf(str2, thelastIdx) + str2.Length Return st End If End Function Und der einfache Aufruf: Dim nameTyp As String = getComputertyp() Dieser Tipp wurde bereits 361 mal aufgerufen.
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 ![]() Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats Dieter Otter Alle Datumsangaben einer Datei ermitteln Eine Funktion, welche das Erstellungsdatum, das Datum des letzten Zugriffs und der letzten Speicherung einer Datei zurückgibt. sevGraph (VB/VBA) ![]() Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! |
||||||||||||||||
|
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |
|||||||||||||||||


Ermitteln des Computertyps in VB mittels PowerShell


