145963
Goto Top

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

Content-Key: 602727

Url: https://administrator.de/contentid/602727

Printed on: April 19, 2024 at 07:04 o'clock

Member: Doskias
Doskias Sep 08, 2020 at 15:09:17 (UTC)
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
Member: manuel-r
manuel-r Sep 08, 2020 at 15:10:02 (UTC)
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
Mitglied: 145963
145963 Sep 08, 2020 at 16:49:59 (UTC)
Goto Top
Das könnte ich morgen ausprobieren. Haben so was wie Namenskonvention. Danke für den Tipp.

Meld mich wieder.
Member: erikro
erikro Sep 08, 2020 at 16:58:05 (UTC)
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
Mitglied: 145916
145916 Sep 08, 2020 at 17:19:21 (UTC)
Goto Top
Zwei OUs für fette und dünne
Oha, das gibt gefährliche Schieflage face-big-smile
Member: manuel-r
manuel-r Sep 08, 2020 at 17:27:28 (UTC)
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
Member: mbehrens
mbehrens Sep 08, 2020 at 18:23:35 (UTC)
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.
Member: manuel-r
manuel-r Sep 08, 2020 at 18:57:58 (UTC)
Goto Top
Wenn es Windows-Thinclients sind kann das schon sein.

Manuel
Mitglied: 145963
145963 Sep 08, 2020 at 19:23:28 (UTC)
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?
Member: c0d3.r3d
c0d3.r3d Sep 08, 2020 updated at 19:41:28 (UTC)
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)
Member: mbehrens
mbehrens Sep 08, 2020 at 19:54:19 (UTC)
Goto Top
Zitat von @manuel-r:

Wenn es Windows-Thinclients sind kann das schon sein.

Das will man nicht wirklich als TC.
Member: manuel-r
manuel-r Sep 08, 2020 at 20:11:23 (UTC)
Goto Top
Stimmt. Aber es gibt sie.
Member: em-pie
em-pie Sep 09, 2020 at 05:09:09 (UTC)
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
Member: mayho33
mayho33 Sep 09, 2020 at 05:36:22 (UTC)
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!
Mitglied: 145963
145963 Sep 09, 2020 updated at 06:38:53 (UTC)
Goto Top
Guten Morgen,

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


Gruß
Member: mayho33
mayho33 Sep 09, 2020 at 06:46:22 (UTC)
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!
Mitglied: 145963
145963 Sep 09, 2020 at 07:17:33 (UTC)
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
Member: mayho33
Solution mayho33 Sep 09, 2020 updated at 07:42:08 (UTC)
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.
Mitglied: 145963
145963 Sep 09, 2020 at 08:11:42 (UTC)
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.
Member: mayho33
mayho33 Sep 09, 2020 at 08:17:54 (UTC)
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
Member: erikro
erikro Sep 09, 2020 at 09:16:38 (UTC)
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.
Mitglied: 145963
145963 Sep 09, 2020 at 14:13:25 (UTC)
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.