Jump to content

Recommended Posts

Moin Leute,

 

hoffe ich bin hier richtig und ihr könnt mir helfen. Versuche gerade in Powershell einzusteigen und ehrlich gesagt finde ich es noch etwas kryptisch. Habe allerdings auch keinerlei Vorkenntnisse

was Programmierung anbelangt.

Sitze jetzt vor folgendem Problem. Ich möchte über PS alle PCs im Netzwerk nach bestimmten Information abragen. Es handelt sich alles um WMI Abfragen. So z.B. PC Model, S/N, IPconfig usw. Die PCs werden aus einer Liste ausgelesen

und sollten dann in einer Tabelle Zeile für Zeile für den jeweiligen PC mit entsprechden Infos ausgegeben werden. Habe es nicht hinbekommen erst einen einzelnen PC mit allen Abfragen anzusteuern. Dementsprechend musste ich die WMI Befehle nacheinander ausführen. Habe jetzt also mehere "Listen". Also eine mit den S/N von allen PCs, eine mit den Modellen usw. Wie bekomme  ich diese jetzt so zusammengefügt, dass ich wie oben erwähnt eine Liste habe mit dem PCs und dahinter die entsprechenenden Werte? Momentan habe ich die einzelnen Werte für jeden PC in unterschiedlichen Zeilen.

Hoffe ihr habt ein Idee? Habe das, was ich bis jetzt habe mal eingefügt. Danke im voraus

$pcs = Get-Content C:\pc.txt
test-connection -computername $pcs  -count 1 -quiet
$cs = $pcs | foreach {get-wmiobject win32_Computersystem -computername $_} | select Name,Model
$bios = $pcs | foreach {get-wmiobject win32_bios -computername $_} | select serialnumber 
$ip = $pcs | foreach {Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE –ComputerName $_} | select IPAddress,DefaultIPGateway,Description,Index
$os = $pcs | foreach {get-wmiobject win32_Operatingsystem osarchitecture -computername $_} | select osarchitecture
$oscap = $pcs | foreach {get-wmiobject win32_Operatingsystem caption -computername $_} | select 
$s = $cs + $bios + $ip + $os + $oscap | select name,model,serialnumber,IPAddress,DefaultIPGateway,Description,Index,caption,osarchitecture | format-table 

 

Share this post


Link to post
Share on other sites

Hallo und Herzlich Willkommen,

 

als Tipps hätte ich für Dich:

  • Nutze Invoke-Command um nicht für jede Info eine eigene Verbindung herstellen zu müssen
  • Nutze bitte immer die explicite Schreibweise ( -Class und -Property ), das erhöht die Lesbarkeit und vereinfacht das Debugging
  • Führe, wenn es geht, die Skripte mit "AsJob" aus, damit du bei vielen Rechnern die Parallelisierung nutzen kannst.

Share this post


Link to post
Share on other sites

Hallo la-kro,

Willkommen im MCSE-Board. Ich habe Dir mal ein Gerüst gebaut und 2 Deiner Abfragen integriert. Die restlichen kannst Du Dir - analog zu den beiden die Du unten siehst - allein einbauen. (Wenn nicht - einfach wieder melden! ;-)

$pcs = Get-Content C:\pc.txt
foreach ($ComputerName in $pcs) {
    if (Test-Connection -ComputerName $ComputerName -Count 1 -Quiet) {
        $CimSession = New-CimSession -ComputerName $ComputerName
        $CS   = Get-CimInstance -ClassName Win32_ComputerSystem -CimSession $CimSession
        $BIOS = Get-CimInstance -ClassName Win32_BIOS -CimSession $CimSession
        [PSCustomObject]@{
            ComputerName = $ComputerName
            Model        = $CS.Model
            SerialNumber = $BIOS.SerialNumber
        }
    }
}

 

Edited by BOfH_666

Share this post


Link to post
Share on other sites
vor 3 Minuten schrieb MurdocX:
  • Führe, wenn es geht, die Skripte mit "AsJob" aus, damit du bei vielen Rechnern die Parallelisierung nutzen kannst.

Das sollte dann aber auch noch mit ForEach Parallel kombiniert werden: https://devblogs.microsoft.com/powershell/powershell-foreach-object-parallel-feature/

 

@la-kro Falls es sich um ein Netz mit Active-Directory handelt, würde ich mir keine "statische" PC Liste erstellen, sondern die PCs "live" aus dem AD holen.

Share this post


Link to post
Share on other sites
vor 18 Minuten schrieb testperson:

Das sollte dann aber auch noch mit ForEach Parallel kombiniert werden: https://devblogs.microsoft.com/powershell/powershell-foreach-object-parallel-feature/

Das ist definitiv ein interessantes Feature!

Übrigens bietet sich das Netzlaufwerk auch als einen guten Ablageort an, wenn du die Daten nicht direkt weiterverarbeiten muss. Mit Out-File und dem Computernamen als Dateinamen lässt sich das gut handeln.

Share this post


Link to post
Share on other sites

Hmmm ... ich kann mich natürlich auch irren (ich tue das ziemlich häufig), aber ist es für einen Anfänger nicht erstmal einfacher, die Befehle "ganz normal" - also sequenziell abzuarbeiten? ... zumal für Foreach-Object -Parallel auch Powershell 7 nötig ist, was noch nicht jeder nutzt. 

vor 39 Minuten schrieb MurdocX:

Mit Out-File und dem Computernamen als Dateinamen lässt sich das gut handeln.

... und hier würd ich auch eher ein Export-Csv empfehlen. Wenn's schon mal strukturierte Daten sind  ....  ;-) 

Share this post


Link to post
Share on other sites
vor 9 Minuten schrieb BOfH_666:

Hmmm ... ich kann mich natürlich auch irren (ich tue das ziemlich häufig), aber ist es für einen Anfänger nicht erstmal einfacher, die Befehle "ganz normal" - also sequenziell abzuarbeiten? ... zumal für Foreach-Object -Parallel auch Powershell 7 nötig ist, was noch nicht jeder nutzt. 

Da bin ich bei dir. Meine "Ergänzung" galt auch eher "dem anderen Jan". :)

  • Like 1

Share this post


Link to post
Share on other sites
vor 2 Stunden schrieb BOfH_666:

Hmmm ... ich kann mich natürlich auch irren (ich tue das ziemlich häufig), aber ist es für einen Anfänger nicht erstmal einfacher, die Befehle "ganz normal" - also sequenziell abzuarbeiten? ... zumal für Foreach-Object -Parallel auch Powershell 7 nötig ist, was noch nicht jeder nutzt. 

... und hier würd ich auch eher ein Export-Csv empfehlen. Wenn's schon mal strukturierte Daten sind  ....  ;-) 

Danke erstmal für das Feedback. Ihr habt recht, das Foreach Parallel kann ich leider nicht nehmen. Geht erst anscheinend ab Version 3. Benutzte teilweise noch Version 2. Werde mal etwas rum experimentieren

Share this post


Link to post
Share on other sites
vor 9 Minuten schrieb la-kro:

 Benutzte teilweise noch Version 2. 

Die solltest Du aber DRINGENDS in Rente schicken. Du hast also noch Windows 7 im Einsatz. Das solltest Du auch DRINGENDS in Rente schicken. Auf den Clients, die Du per WMI/CIM abfragen möchtest, muss übrigens nicht unbedingt eine aktuelle Powershell laufen. Die Abfragen laufen ja eben über WMI/CIM und nicht über Powershell.  ;-) 

Share this post


Link to post
Share on other sites

Schau mal hier:

 

WMF 5.1: PowerShell 5.1 für Windows 7 / 8.1, Server 2008 R2 und 2012 (R2)

https://www.windowspro.de/wolfgang-sommergut/wmf-51-powershell-51-fuer-windows-7-81-server-2008-2012-r2

 

Windows Management Framework 5.1 | Microsoft

https://www.microsoft.com/en-us/download/details.aspx?id=54616

 

Dort kannst du deine Version auf die semiaktuelle 5.1 hochheben :-) 

Share this post


Link to post
Share on other sites
vor 10 Minuten schrieb MurdocX:

Dort kannst du deine Version auf die semiaktuelle 5.1 hochheben :-) 

Ich hätt' ja wieder einfach ein Upgrade auf Windows 10 empfohlen. Da ist die 5.1 sowieso schon mit dabei. Alles andere verlängert doch nur das Leiden.  :aetsch2: :grin3:

 

Hat einer von Euch noch Kunden, die wirklich noch Windows 8.1 im Einsatz haben?

Edited by BOfH_666

Share this post


Link to post
Share on other sites
vor 2 Minuten schrieb BOfH_666:

Hat einer von Euch noch Kunden, die wirklich noch Windows 8.1 im Einsatz haben?

Öh, ja... Wir selber :lool:

 

Das liegt teilweise an den verstreuten Notebooks und der tollen "Zufriedenheit" mit Windows 8.1. Man muss sich nur lange genug an was gewöhnen, dann ist auch der Schmerz nicht mehr so groß. 

Share this post


Link to post
Share on other sites
vor 3 Minuten schrieb MurdocX:

Öh, ja... Wir selber :lool:

Ach Gottchen .... Du Ärmster ...  ich werde Dich in meine Abend-Gebete einschließen.   :engel:

  • Haha 1

Share this post


Link to post
Share on other sites
vor 2 Stunden schrieb BOfH_666:

Ach Gottchen .... Du Ärmster ...  ich werde Dich in meine Abend-Gebete einschließen.   :engel:

Die 10 Gebote... ;)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Werbepartner:



×
×
  • Create New...