none
remote abfrage mit systeminfo RRS feed

  • Frage

  • Guten Tag Ihr Lieben,

    und zwar bräuchte ich hilfe bei einem Script.

    $ServerListFile = "C:\scripte\_ServerNamen.txt"
    $ServerList = Get-Content $ServerListFile -ErrorAction SilentlyContinue
    $Result = @()

    ForEach($computername in $ServerList)
    {

        $AVGProc = Get-WmiObject -ComputerName $Computername win32_processor | Measure-Object -property LoadPercentage -Average | Select Average
        $OS = Get-WmiObject -ComputerName $Computername -Class win32_operatingsystem | Select-Object @{Name = "MemoryUsage"; Expression = {“{0:N2}” -f ((($_.TotalVisibleMemorySize - $_.FreePhysicalMemory)*100)/ $_.TotalVisibleMemorySize) }}
        
    $result += [PSCustomObject] @{
            ServerName = "$computername"
            CPULoad = "$($AVGProc.Average)%"
            MemLoad = "$($OS.MemoryUsage)%"
          
                }
     $Result | Out-File -FilePath C:\Scripte\CPU_Ram_AVG$(get-date -f yyyy-MM-dd).txt


                }

    Über die Liste _ServerNamen möchte mehrere Server abfragen, und zwar mit der abfrage systeminfo.exe

    Das funktioniert aber leider nicht, kann mir da einer bitte helfen?

    Vielen Dank!!!

    Freitag, 22. Februar 2019 13:49

Antworten

  • ... würde dann etwa so aussehen ...

    $ServerListe = @(
        $env:COMPUTERNAME,
        [System.Net.Dns]::GetHostName()
        & {hostname}
    )
    
    $Ergebnisse = foreach ($ComputerName in $ServerListe) {
        systeminfo /s $ComputerName /FO CSV | 
            ConvertFrom-Csv -UseCulture 
    }
    $Ergebnisse |
        Export-Csv -Path "C:\Scripte\SystemInfo_$(Get-Date -Format 'yyyy-MM-dd').csv" -Delimiter ';' -NoTypeInformation -Encoding UTF8 -Force

    So hättest Du die Ergebnisse alle in einer übersichtlichen CSV-Datei und könntest sie sogar mit Powershell "weiterverarbeiten", wenn gewünscht.


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 26. Februar 2019 17:59
  • Das geht per Invoke-Command.

    https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/invoke-command?view=powershell-6

    Damit rufst du auf dem Ziel bei einstsprechender Berechtigung ein Programm auf und per "> /MyDir/MyText.txt" kannst du das Ergebis umleiten und mit entsprechenden Befehlen den Inhalt wieder nach lokal kopieren.


    Samstag, 23. Februar 2019 16:17

Alle Antworten

  • nimm das Microsoft Admin Center. Da hast du alle gratis dabei

    https://docs.microsoft.com/en-us/windows-server/manage/windows-admin-center/understand/windows-admin-center

    https://www.anreiter.at/windows-admin-center/


    Chris

    Freitag, 22. Februar 2019 14:02
  • Danke Chris, für die schnelle Antwort!!!

    Aber ich habe eher gehofft, dass mir einer den script vielleicht so schreiben könnte, das ich mit der abfrage systeminfo.exe alles auf die textdatei bekomme.

    Trotzdem Danke :)

    Freitag, 22. Februar 2019 14:12
  • und zwar bräuchte ich hilfe bei einem Script.

    Welche Hilfe brauchst Du denn mit dem Script?

    Über die Liste _ServerNamen möchte mehrere Server abfragen, und zwar mit der abfrage systeminfo.exe

    Das funktioniert aber leider nicht, kann mir da einer bitte helfen?

    Warum mit systeminfo.exe bzw. was genau möchtest Du denn abfragen? Und was genau funktioniert nicht?


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Freitag, 22. Februar 2019 14:17
  • Grüß dich BOfH_666,

    tut mir leid ich habe mich wohl falsch ausgedrückt. Also, ich möchte im prinzip die werte die bei der Abfrage systeminfo.exe rauskommt, die hätte ich gern alle in der Textdatei. Und das von der _Serverliste, die ich erstellt habe.

    Ich hoffe du hast mich jetzt verstanden, was ich möchte xD... danke:)

    Freitag, 22. Februar 2019 14:26
  • Du möchtest also, dass jemand Deine Hausaufgaben macht, richtig?  ;-)

    Sowas machen wir hier nicht. Wir geben gern alle nötigen Tipps und helfen Dir bei selbst geschreibenem Code, aber wir passen keine Scripte auf Anfrage an und schreiben auch keinen gebrauchsfertigen Code auf Anfrage.

    Wenn das Script von Dir ist, solltest Du so fit in Powershell sein, dass Du mit einem Invoke-Command einen Befehl remote ausführen kannst. systeminfo.exe hat den Schalter /FO. Damit kannst Du die Ergebnisse dann im Format CSV ausgeben.

    Wenn Du nicht selber aktiv werden möchtest oder kannst - es gibt im Internet unzählige Beispiele für "Server-Inventur-Scripte" in Powershell. Die Powershell-Gallery ist da eine gute Anlaufstelle.

    ... und noch was ...  wenn Du hier Code postest, formatier den doch bitte als Code. Das vermeidet ungewollte Zeilenumbrüche und macht es leichter den Code zu lesen, zu verstehen und zu kopieren usw.  ... Danke.  ;-)


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''





    • Bearbeitet BOfH-666 Freitag, 22. Februar 2019 14:37
    Freitag, 22. Februar 2019 14:35
  • Versuch war es wert, merciiii :D

    Okay, wird in Zukunft gemacht Chef!

    Melde micha ab!

    Freitag, 22. Februar 2019 14:41
  • Das geht per Invoke-Command.

    https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/invoke-command?view=powershell-6

    Damit rufst du auf dem Ziel bei einstsprechender Berechtigung ein Programm auf und per "> /MyDir/MyText.txt" kannst du das Ergebis umleiten und mit entsprechenden Befehlen den Inhalt wieder nach lokal kopieren.


    Samstag, 23. Februar 2019 16:17
  • servus bfuerchau,

    danke für deine hilfe.

    $ServerListFile = "C:\scripte\_ServerNamen.txt" 
    $ServerList = Get-Content $ServerListFile -ErrorAction SilentlyContinue 
    $Result = @() 
    
    ForEach($computername in $ServerList) 
    {
    
        $Test = systeminfo /s $computername
    $result += [PSCustomObject] @{ 
    
            TEST    = "($Test)"
          
                }
     $Result | Out-File -FilePath C:\Scripte\CPU_Ram_AVG$(get-date -f yyyy-MM-dd).txt
    
    
                }
    
    

    das was ich jetzt haben wollte funktioniert.

    allerdings bekomm ich nicht die ganzen werte (systeminfo) auf .txt angezeigt, so wie die ausgabe eigentlich sein sollte. hat wer einen tipp wieso`?

    Ich bin für jede Unterstützung dankbar :)

    Dienstag, 26. Februar 2019 14:31
  • Wie ich oben schon mal geschrieben hatte, kannst Du dem Tool systeminfo.exe den Schalter /FO mitgeben. Dann bekommst Du die Ausgabe als CSV und kannst die mit Powershell prima weiterverarbeiten. Mit CSV-Daten kann die Powershell gut umgehen.

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 26. Februar 2019 16:05
  • ... würde dann etwa so aussehen ...

    $ServerListe = @(
        $env:COMPUTERNAME,
        [System.Net.Dns]::GetHostName()
        & {hostname}
    )
    
    $Ergebnisse = foreach ($ComputerName in $ServerListe) {
        systeminfo /s $ComputerName /FO CSV | 
            ConvertFrom-Csv -UseCulture 
    }
    $Ergebnisse |
        Export-Csv -Path "C:\Scripte\SystemInfo_$(Get-Date -Format 'yyyy-MM-dd').csv" -Delimiter ';' -NoTypeInformation -Encoding UTF8 -Force

    So hättest Du die Ergebnisse alle in einer übersichtlichen CSV-Datei und könntest sie sogar mit Powershell "weiterverarbeiten", wenn gewünscht.


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 26. Februar 2019 17:59
  • <3 bist der beste, merci <33
    Mittwoch, 27. Februar 2019 15:06
  • Wenn Dir eine der Antworten weitergeholfen hat, bzw. Du eine der Antworten als DIE Antwort gelten lässt, soltest Du sie entsprechend markieren. Dann finden andere, die das gleiche oder ein ähnliches Problem haben, die Antwort hoffentlich ein wenig schneller.

    Danke.


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 27. Februar 2019 15:26
  • $ServerListFile = "C:\scripte\_ServerNamen.txt" 
    $ServerList = Get-Content $ServerListFile -ErrorAction SilentlyContinue 
    
    $ServerList = @(
        $env:COMPUTERNAME,
        [System.Net.Dns]::GetHostName()
        & {hostname}
    )
    
    $Ergebnisse = foreach ($ComputerName in $ServerList) {
        systeminfo /s $ComputerName /FO LIST| 
    		ConvertFrom-Csv -UseCulture
    }
    $Ergebnisse |
        Export-Csv -Path "C:\Scripte\SystemInfo_$(Get-Date -Format 'yyyy-MM-dd').csv" -Delimiter ';' -NoTypeInformation -Encoding UTF8 -Force

    leider habe ich noch ein kleines problem, wenn ich den script jetzt laufen lasse, spuckt er mir nicht die ganzen daten von der serverliste aus, sonder immer nur von einem server.

    habe ich was vergessen. bzw. ist was falsch an dem script?

    auf der liste sind mehere server die abgefragt werden müssen..

    bitte fragt mich nicht wofür ich sowas überhaupt brauche, ich brauch es einfach xD.

    vielen dank für eure aufmerksamkeit :)


    Freitag, 1. März 2019 16:54
  • OK ... lass uns versuchen, ob Du selbst drauf kommst ...  wir nehmen eine Variable und weisen ihr einen Wert zu .... nehmen wir einfach einen String

    $variable = 'Das ist ein einfacher String'

    ... wenn wir jetzt im Verlauf des Scriptes der selben Variablen erneut einen Wert zuweisen ...

    $variable = 'Das ist ein ganz anderer String'

    ... was erhalten wir dann, wenn wir uns den Wert der Variablen wieder ausgeben lassen?

    $variable
    .... und jetzt schau Dir den von Dir zuletzt geposteten Code nochmal an und hab im Hinterkopf, dass der Code, den ich gepostet hatte, nur ein Beispiel war weil ich ja keinen Zugriff auf Deine Infrastrutkur hatte.  ;-)  :-D



    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''


    • Bearbeitet BOfH-666 Freitag, 1. März 2019 18:15
    Freitag, 1. März 2019 18:13
  • oh man.. >.<

    ich komm nicht wirklich drauf...

    Montag, 4. März 2019 09:32
  • versuche mal

    foreach ($ComputerName in $ServerListe) {
        systeminfo /s $ComputerName /FO CSV | 
            ConvertFrom-Csv -UseCulture 
    } | $Ergebnisse

    Wobei ich nicht weiß, ob das geht.
    Ansonsten musst du das Ergebnis von ConvertFrom innerhalb der Schleife z.B. einer Liste zuweisen oder aneinander ketten:

    foreach ($ComputerName in $ServerListe) { systeminfo /s $ComputerName /FO CSV | ConvertFrom-Csv -UseCulture | $Result

       $Ergebnisse = $Ergebnisse + $Result }



    Montag, 4. März 2019 09:42
  • oh man.. >.<

    ich komm nicht wirklich drauf...

    hmmm ... das ist aber echt schwach jetzt .... 

    Du befüllst die Variable $ServerList aus Deiner Text-Datei _ServerNamen.txt. Danach befüllst Du die selbe Variable $ServerList erneut - diesmal aber mit meinen Beispieldaten. Danach sind dann also nur meine Beipspieldaten in der Variable. Du musst einfach nur den Block mit der Variablenzuweisung meiner Beispieldaten entfernen.


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Montag, 4. März 2019 12:24