145963

Powershell Abfrage Computername Thinclient oder Fatclient?

Hallo an alle,

bin noch nicht lange Admin und habe nun eine Frage bezüglich der Abfrage in Powershell.

Wir haben hier ein Programm namens "OCS Inventory".
Mein Kollege sagt mir grade, dass dieses Programm nur auf den Fatclients installiert ist.
Auf den Thinclients, die an den Servern hängen natürlich nicht.
Jetzt zur eigentlichen Frage.
Kann man mit der Powershell erkennen ob es sich um Thinclients oder Fatclients handelt?
Mit der Abfrage kann ich ja zählen wieviele Computer im ActiveDirectory sind.
Kann man nun explizit nach Thinclients suchen und zählen und auch nach den Fatclients?


Gruß MotoGP
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 602727

Url: https://administrator.de/forum/powershell-abfrage-computername-thinclient-oder-fatclient-602727.html

Ausgedruckt am: 13.05.2025 um 12:05 Uhr

Doskias
Doskias 08.09.2020 um 17:09:17 Uhr
Goto Top
Direkt geht das nicht. Es gibt ja keinen Schalter für die Bauart.

Ich hatte neulich ein ähnliche Aufgabe vor mir. Ich musste Rechner nach Bauarten identifizieren. Sprich: Desktop, Minitower, Miditower, etc. da wir einen Ringtausch machen wollten. Glücklicherweise konnte ich das Problem lösen, da jeder Tower ein anderen Mainboard Hersteller hatte und ich übers DHCP an alle MAC-Adressen rankam und dann nach Hersteller sortieren konnte. Das Skript kann ich dir geben (sind bei mir 100 Zeilen).

Alternativ könntest du natürlich auch schauen auf welchem Rechner "OCS Inventory" installiert ist.

Gruß
Doskias
manuel-r
manuel-r 08.09.2020 um 17:10:02 Uhr
Goto Top
Hallo

Kann man nun explizit nach Thinclients suchen und zählen und auch nach den Fatclients?

So einfach nicht. Es gibt kein Attribut das ThinClient/FatClient beinhaltet.
Je nachdem wie bei euch die Namenskonvention für Clients ist könntest du darüber gehen. Bei uns ist im Clientname an einer bestimmten Stellen NB/PC/TB untergebracht für Notebook, Desktop und Tablet. Alternativ kannst du auch über das Betriebssystem filtern. Dafür gibt es ein Attribut sofern deine Thinclients da was eintragen beim Domänenbeitritt

Manuel
145963
145963 08.09.2020 um 18:49:59 Uhr
Goto Top
Das könnte ich morgen ausprobieren. Haben so was wie Namenskonvention. Danke für den Tipp.

Meld mich wieder.
erikro
erikro 08.09.2020 um 18:58:05 Uhr
Goto Top
Moin,

zwei "Umwege":

Du suchst nach installierter Software (z. B. Office), die im Standard auf den fetten ist und auf den dünnen nicht.

Du suchst nach allen Rechnern im AD und nach allen im Inventory. Die Differenz sind die dünnen.

Der imho richtige Weg: Zwei OUs für fette und dünne. Dann hast Du das Problem nicht.

hth

Erik
145916
145916 08.09.2020 um 19:19:21 Uhr
Goto Top
Zwei OUs für fette und dünne
Oha, das gibt gefährliche Schieflage face-big-smile
manuel-r
manuel-r 08.09.2020 um 19:27:28 Uhr
Goto Top
Du suchst nach installierter Software (z. B. Office), die im Standard auf den fetten ist und auf den dünnen nicht.

Das wird zwar funktionieren, hat aber aus meiner Sicht entscheidende Nachteile:
  • die Clients müssen in dem Moment in dem abgefragt wird online sein
  • es müssen alle Clients abgefragt werden, was schon etwas dauern kann

Das mit dem "müssen online sein" könnte man noch umgehen indem die Client die Softwareinventur beim Start machen und irgendwo eine Textdatei ablegen. Die Dateien könnte man dann entsprechend verarbeiten.

Eine Abfrage im AD ist aber definitiv schneller und unabhängiger.

Manuel
mbehrens
mbehrens 08.09.2020 um 20:23:35 Uhr
Goto Top
Zitat von @erikro:

zwei "Umwege":

Du suchst nach installierter Software (z. B. Office), die im Standard auf den fetten ist und auf den dünnen nicht.

Du suchst nach allen Rechnern im AD und nach allen im Inventory. Die Differenz sind die dünnen.

Der imho richtige Weg: Zwei OUs für fette und dünne. Dann hast Du das Problem nicht.

Ich werfe mal ein, dass die TCs gar nicht im AD zu finden sind.
manuel-r
manuel-r 08.09.2020 um 20:57:58 Uhr
Goto Top
Wenn es Windows-Thinclients sind kann das schon sein.

Manuel
145963
145963 08.09.2020 um 21:23:28 Uhr
Goto Top
Hab mich schon gefragt warum das so ist. Konnte mich nur mit Fatclients über Enter-PSSession verbinden. Mit den Thin Clients hat es bisher nicht funktioniert. Gibt es einen Grund dafür?
c0d3.r3d
c0d3.r3d 08.09.2020 aktualisiert um 21:41:28 Uhr
Goto Top
Ich tippe einfach Mal daraus, dass die ThinClients kein Domänenmitglied sind, weil sich darauf ein (PXE) Linux befindet, welches eine Sitzung zum TS aufbaut - sodass das Member sein als Computer in der Domäne überflüssig bzw. zu Problem führen könnte.

Bei uns haben wir in der Firma fast ausschließlich ThinClients im Einsatz und in der Domäne befindet sich kein einziger.

Meines Wissens nach gibt es nicht alle Powershell Befehle auch für Linux. Sinnvoll wäre ggf. Im DHCP Server sich die Namen der Systeme herauszusuchen, da die clients normalerweise eine statische IP haben (wenn PXE)
mbehrens
mbehrens 08.09.2020 um 21:54:19 Uhr
Goto Top
Zitat von @manuel-r:

Wenn es Windows-Thinclients sind kann das schon sein.

Das will man nicht wirklich als TC.
manuel-r
manuel-r 08.09.2020 um 22:11:23 Uhr
Goto Top
Stimmt. Aber es gibt sie.
em-pie
em-pie 09.09.2020 um 07:09:09 Uhr
Goto Top
Moin,

Um was für ThinClients handelt es sich eigentlich?
Wildwuchs oder alles selber Hersteller, z.B. Igel.

Für letzteren gibt es ein PS-Modul, mit dem man sich gegen die UMS verbinden kann:

https://github.com/IGEL-Community/PSIGEL

Gruß
em-pie
mayho33
mayho33 09.09.2020 um 07:36:22 Uhr
Goto Top
Hi!

Du kannst eine WMI-Query auf Win32_SystemEnclosure absetzen. Darunter ist auch der ChassisType enthalten. Type 15 (Space-Saving) wäre ein ThinClient.

Get-WmiObject -Class Win32_SystemEnclosure | Select-Object -Property ChassisTypes

Eine Liste aller Chassis-Types :

1 - Andere
2 - Unbekannt
3 - Desktop
4 - Flacher Desktop
5 - Pizzabox
6 - Minitower
7 - Tower
8 - Tragbar
9 - Laptop
10 - Notebook
11 - Handheld
12 - Dockingstation
13 - All-in-One
14 - Subnotebook
15 - Platz sparend
16 - Lunchbox
17 - Hauptsystemchassis
18 - Erweiterungschassis
19 - Subchassis
20 - Buserweiterungschassis
21 - Peripheriechassis
22 - Speicherchassis
23 - Gestellchassis
24 - Versiegeltes Computergehäuse

Die Liste wurde irgendwann erweiter auf Convertibles. Siehe: https://thinkdeploy.blogspot.com/2017/04/new-enclosure-types-for-convert ...


Wenn ihr SCCM im Einsatz habt lässt sich das auch über eine Report-Query lösen.

Grüße!
145963
145963 09.09.2020 aktualisiert um 08:38:53 Uhr
Goto Top
Guten Morgen,

Es handelt sich um "Shuttle" Thin Clients mit Windows 7 Professional hauptäschlich drauf.
Also kein Linux.


Gruß
mayho33
mayho33 09.09.2020 um 08:46:22 Uhr
Goto Top
Guten Morgen,

WMI (Windows Management Instrument) -Query wäre mir eh nur unter Windows bekannt. Das OS ist unerheblich solange sich ein Windows OS auf dem Gerät befindet.

Grüße!
145963
145963 09.09.2020 um 09:17:33 Uhr
Goto Top
Hallo nochmal,

mayho33 du hast folgenden Befehl gepostet:

Get-WmiObject -Class Win32_SystemEnclosure | Select-Object -Property ChassisTypes

Frage an alle:
Hinter dem Parameter -Class steht "Win32_SystemEnclosure".
Wenn ich anstatt dessen den "*" angebe, kommt folgende Fehlermeldung.
Kann man das "Win32_SystemEnclosure" rausfinden oder muss ich das explizit wissen?


PS Y:\> Get-WmiObject -Class '*'| Select-Object -Property ChassisTypes
Get-WmiObject : Die Anfrage ist ungültig. "select * from *"
In Zeile:1 Zeichen:1

back-to-topGet-WmiObject -Class '*'| Select-Object -Property ChassisTypes

back-to-top~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidArgument: (face-smile [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectComm
and
mayho33
Lösung mayho33 09.09.2020 aktualisiert um 09:42:08 Uhr
Goto Top
Class legt fest auf welches WMI-Object du losgehen willst. Das musst du explizit wissen.

Du kannst die das Tool WMIExplorer herunter laden ( https://devblogs.microsoft.com/scripting/weekend-scripter-the-wmi-explor ... ). Da werden alle WMI-Classes gelistet. Inklusive aller Properties usw.

Mit dem WMI Code Generator von MS kannst du die Query gleich als Code bereitstellen lassen (Copy n Paste): https://www.microsoft.com/en-us/download/details.aspx?id=8572

in c# würde der Code in etwa so aussehen:

ManagementObjectSearcher searcher =
                    new ManagementObjectSearcher("root\\CIMV2", "SELECT ChassisTypes FROM Win32_SystemEnclosure");  

foreach (ManagementObject queryObj in searcher.Get())
{
    if (queryObj["ChassisTypes"] != null)  
    {
        UInt16 arrChassisTypes = (UInt16)(queryObj["ChassisTypes"]);  
        foreach (UInt16 arrValue in arrChassisTypes)
        {
            Console.WriteLine("ChassisTypes: {0}", arrValue);  
        }
     }
}

und wenn du das noch übersetzt (Posting weiter oben) hast du gleich eine lesbare Ausgabe die du weiterverarbeiten kannst.

z.B.:

ManagementObjectSearcher searcher =
                    new ManagementObjectSearcher("root\\CIMV2", "SELECT ChassisTypes FROM Win32_SystemEnclosure");  

foreach (ManagementObject queryObj in searcher.Get())
{
    if (queryObj["ChassisTypes"] != null)  
    {
        UInt16 arrChassisTypes = (UInt16)(queryObj["ChassisTypes"]);  
        foreach (UInt16 arrValue in arrChassisTypes)
        {
            Console.WriteLine((arrValue == 3) ? "Desktop" : "Was anderes");              
        }
    }
}


Und noch ein kleiner Tipp:

Das lässt sich auch als GPO verwirklichen oder beim Aufsetzen gleich einen entsprechenden Registry Eintrag setzen.
145963
145963 09.09.2020 um 10:11:42 Uhr
Goto Top
Grüß dich,

danke dir für die Info. Leider bin ich noch nicht soweit. Wollte nur wissen ob man das generell auslesen kann
oder halt nicht. Können tut man fast alles, die Frage ist dann nur wie?
Ich schau mir das mal in Ruhe an.
mayho33
mayho33 09.09.2020 um 10:17:54 Uhr
Goto Top
Hier ein kleines Beispiel. Einfach in einem PS1 speichern und ausführen:

Function Get-ChassisType {

$typeList =@{
"1"="Andere"  
"2"="Unbekannt"  
"3"="Desktop"  
"4"="Flacher Desktop"  
"5"="Pizzabox"  
"6"="Minitower"  
"7"="Tower"  
"8"="Tragbar"  
"9"="Laptop"  
"10"="Notebook"  
"11"="Handheld"  
"12"="Dockingstation"  
"13"="All-in-One"  
"14"="Subnotebook"  
"15"="Platz sparend"  
"16"="Lunchbox"  
"17"="Hauptsystemchassis"  
"18"="Erweiterungschassis"  
"19"="Subchassis"  
"20"="Buserweiterungschassis"  
"21"="Peripheriechassis"  
"22"="Speicherchassis"  
"23"="Gestellchassis"  
"24"="Versiegeltes Computergehäuse"}  

    Clear-Host
    [string]$chasType = (Get-WMIObject -Query "SELECT * FROM Win32_SystemEnclosure" -Namespace "root/CIMV2" -ComputerName "." | select ChassisTypes).ChassisTypes  

    $toRet = $typeList[$chasType]

    return $toRet
}

Get-ChassisType
erikro
erikro 09.09.2020 um 11:16:38 Uhr
Goto Top
Zitat von @mbehrens:

Zitat von @erikro:

zwei "Umwege":

Du suchst nach installierter Software (z. B. Office), die im Standard auf den fetten ist und auf den dünnen nicht.

Du suchst nach allen Rechnern im AD und nach allen im Inventory. Die Differenz sind die dünnen.

Der imho richtige Weg: Zwei OUs für fette und dünne. Dann hast Du das Problem nicht.

Ich werfe mal ein, dass die TCs gar nicht im AD zu finden sind.

Das kann schon sein. Aber nach Aussage des TO sind sie das.
145963
145963 09.09.2020 um 16:13:25 Uhr
Goto Top
Fehlinformation von mir. Thin Clients sind nicht im Active Directory. Bin noch zu neu um das zu wissen. Nur die Fat-Clients
sind im Active Directory. Hätte ich diese Info vorher gehabt, wäre diese Frage überflüssig gewesen. Tut mir leid, mein Fehler.