none
Mehrere Abfragen zu einem Add-Content zusammenfassen RRS feed

  • Frage

  • $env:computername | Add-Content \\server\TreiberProbleme.txt
    Get-ComputerInfo | Select OsLocalDateTime | Add-Content \\server\TreiberProbleme.txt
    Get-ComputerInfo | Select CsManufacturer, CsSystemFamily, CsModel | Add-Content \\server\TreiberProbleme.txt
    Get-ComputerInfo | Select WindowsProductName, WindowsVersion, OSVersion | Add-Content \\server\TreiberProbleme.txt
    gwmi cim_LogicalDevice | ? {$PSItem.Status -eq 'Error'} | Select Name, Status | Add-Content \\server\TreiberProbleme.txt

    Hiho, wisst Ihr evtl. wie ich meinen Code zu EINEM Add-Content zusammenfügen könnte? Das heißt, dass zuerst alles abgefragt wird und erst am Ende EIN Add-Content steht. Hintergrund ist der, dass die txt immer die richtige Reihenfolge beibehalten soll auch wenn das Skript auf 2 Rechnern gleichzeitig läuft.

    Danke 



    • Bearbeitet Christo21 Donnerstag, 27. Februar 2020 13:25
    Donnerstag, 27. Februar 2020 12:42

Antworten

  • Hi,

    das geht, indem du ein Array initialisierst und dieses dann befüllst. Am Ende pipst du dann den Inhalt des Arrays in deine Datei.

    Ein leeres Array erzeugst du mit:

    $1 = @()

    Füllen kannst du es dann mit:

    $1 += get-deineinfo

    Gruß

    • Als Antwort markiert Christo21 Donnerstag, 27. Februar 2020 14:03
    Donnerstag, 27. Februar 2020 13:48
  • Erstmal solltest du Get-Computerinfo nur einmal ausführen, das spart massenhaft Zeit. Dann ist es immer eine gute Idee das Resultat einer solchen Abfrage erstmal komplett in einer Variable zu speichern und dann erst zu filtern.
    Dann kann man nämlich auch noch einfach zusätzliche Informationen hinzufügen, wie Computername. Btw. hat das Resultat von Get-Computerinfo tatsächlich kein Computer-Name-Property?

    $CInfo  = Get-ComputerInfo 
    $CInfo | Add-member Noteproperty -Name "ComputerName" -Value $env:computername 
    $CInfo | Select ComputerName, OsLocalDateTime, CsManufacturer, CsSystemFamily, CsModel, WindowsProductName, WindowsVersion, OSVersion  |  Out-String | Add-Content \\server\TreiberProbleme.txt
     
    Grüße, Denniver


    Blog: http://www.bytecookie.de

    Powershell Code Manager: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.


    Donnerstag, 27. Februar 2020 14:04
    Moderator

Alle Antworten

  • Hi,

    das geht, indem du ein Array initialisierst und dieses dann befüllst. Am Ende pipst du dann den Inhalt des Arrays in deine Datei.

    Ein leeres Array erzeugst du mit:

    $1 = @()

    Füllen kannst du es dann mit:

    $1 += get-deineinfo

    Gruß

    • Als Antwort markiert Christo21 Donnerstag, 27. Februar 2020 14:03
    Donnerstag, 27. Februar 2020 13:48
  • Perfekt. Danke hat geklappt :)
    Donnerstag, 27. Februar 2020 14:03
  • Erstmal solltest du Get-Computerinfo nur einmal ausführen, das spart massenhaft Zeit. Dann ist es immer eine gute Idee das Resultat einer solchen Abfrage erstmal komplett in einer Variable zu speichern und dann erst zu filtern.
    Dann kann man nämlich auch noch einfach zusätzliche Informationen hinzufügen, wie Computername. Btw. hat das Resultat von Get-Computerinfo tatsächlich kein Computer-Name-Property?

    $CInfo  = Get-ComputerInfo 
    $CInfo | Add-member Noteproperty -Name "ComputerName" -Value $env:computername 
    $CInfo | Select ComputerName, OsLocalDateTime, CsManufacturer, CsSystemFamily, CsModel, WindowsProductName, WindowsVersion, OSVersion  |  Out-String | Add-Content \\server\TreiberProbleme.txt
     
    Grüße, Denniver


    Blog: http://www.bytecookie.de

    Powershell Code Manager: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.


    Donnerstag, 27. Februar 2020 14:04
    Moderator
  • ... Btw. hat das Resultat kein Computer-Name-Property??...

    ... doch doch ...  CsCaption oder CsDNSHostName oder CsName  ...   ;-)

    Live long and prosper!

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

    Donnerstag, 27. Februar 2020 14:19
  • Hätte mich auch gewundert...

    Blog: http://www.bytecookie.de

    Powershell Code Manager: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Donnerstag, 27. Februar 2020 14:20
    Moderator