none
Wie schreibe ich die "Überschriften" eines CMDLets in eine Datei? Beispiel Get-Printer RRS feed

  • Frage

  • Hi,

    vielleicht hat jemand eine schnelle Hilfe?
    Folgende Sachlage:
    ich möchte für einen Export in Dateien (z.B. CSV) die möglichen CMDLet Überschriften (Headers) - und nur diese - ermitteln.
    Beispiel Get-Printer zeigt mir diese Titel:

    Name                           ComputerName    Type         DriverName                PortName        Shared   Published  DeviceType     

    Darunter gelistet halt die Objekte. Allerdings interessieren mich diese erstmal nicht.
    Ich möchte nur "Name,ComputerName,Type,DriverName,PortName,Shared,Published,DeviceType" als string erhalten.
    Dies wäre dann auch nutzbar für andere CMDLets, z.B. Get-Process, Get-Services etc.

    Sinn darin?
    Nun, ich wäre in der Lage, Reports zu generieren, ohne definieren zu müssen, welche Header eine Export Datei haben soll.
    Somit wäre das Script universell einsetzbar für jedes gewünschte CMDLet in Powershell um eben die Standard Header zu verwenden, ohne diese kennen zu müssen.
    Meine Versuche scheitern halt.
    Ein Ansatz wäre natürlich, erst in CSV zu exportieren, dann CSV zu importieren und dabei nur die erste Zeile zu importieren.
    Aber das wäre halt ein Umweg. Müsste doch auch anders gehen, oder?

    Vielen Dank für Tipps & Tricks :)

    Gruß

    Sascha

    Dienstag, 2. Oktober 2018 09:25

Antworten

  • Um die Überschriften zu erhalten benötigtst du mindestens 1 Objekt.
    Dann kann man per get-member die Eigenschaften und Methoden auslesen.

    Für dein Beispiel weist du einer Variablen das Ergebnis zu und kannst dem 1. Objekt diese entnehmen.
    Allerdings hast du an deinem Beispiel mehr Eigenschaften als mit der Standardmethode ToString() ausgegeben wird.

    Beispiel:

    $a = get-printer
    $a[0] | get-member

    https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-member?view=powershell-6

    • Als Antwort markiert Etchell Dienstag, 2. Oktober 2018 12:21
    Dienstag, 2. Oktober 2018 10:46
  • Woin die Reise gehen soll, habe ich auch nicht verstanden, aber die Properties die ein von einem cmdlet geliefertes Object hat, kannst Du so ausgeben:
    Get-Printer |
        Get-Member | 
            Where-Object -Property MemberType -Like -Value '*Property' | 
                Select-Object -Property Name

    Live long and prosper!

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

    • Als Antwort markiert Etchell Dienstag, 2. Oktober 2018 12:21
    Dienstag, 2. Oktober 2018 10:51

Alle Antworten

  • Ich versteh den Sinn trotzdem nicht, aber egal:

    https://poshoholic.com/2008/07/05/essential-powershell-define-default-properties-for-custom-objects/

    Haben aber nicht alle Objekte, dann geht es mit DotNetTypes.format.ps1xml weiter: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/format-table


    Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq

    Dienstag, 2. Oktober 2018 09:51
  • Um die Überschriften zu erhalten benötigtst du mindestens 1 Objekt.
    Dann kann man per get-member die Eigenschaften und Methoden auslesen.

    Für dein Beispiel weist du einer Variablen das Ergebnis zu und kannst dem 1. Objekt diese entnehmen.
    Allerdings hast du an deinem Beispiel mehr Eigenschaften als mit der Standardmethode ToString() ausgegeben wird.

    Beispiel:

    $a = get-printer
    $a[0] | get-member

    https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-member?view=powershell-6

    • Als Antwort markiert Etchell Dienstag, 2. Oktober 2018 12:21
    Dienstag, 2. Oktober 2018 10:46
  • Woin die Reise gehen soll, habe ich auch nicht verstanden, aber die Properties die ein von einem cmdlet geliefertes Object hat, kannst Du so ausgeben:
    Get-Printer |
        Get-Member | 
            Where-Object -Property MemberType -Like -Value '*Property' | 
                Select-Object -Property Name

    Live long and prosper!

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

    • Als Antwort markiert Etchell Dienstag, 2. Oktober 2018 12:21
    Dienstag, 2. Oktober 2018 10:51
  • Danke! Vielleicht ist meine Reise wirklich nicht auf ein sichbares Ziel gerichtet, manchmal habe ich halt Ideen für meine PowerShell scripts, die erstmal nur theoretischer Natur sind und manchmal halt nur die Idee gemeinsam haben, Sachen in modularer Weise zu schreiben, später ggf. dann entsprechende Aufgaben darin zu entwickeln.

    Wenn ich mal was habe, teile ich es gerne, wenn jemand noch Interesse hat :)

    Dienstag, 2. Oktober 2018 12:25
  • Das geht so in die Richtung:

    Wie lautet die Antwort auf die letzte aller Fragen?

    42

    Diese Antwort teile ich gerne;-).

    Dienstag, 2. Oktober 2018 12:32
  • Wenn ich mal was habe, teile ich es gerne, wenn jemand noch Interesse hat :)
    ... na wenn was Produktives dabei rauskommt, wollen wir das alle wissen!!  ;-) .... da bin ich ja schon mal gespannt.  :-D  Vielleicht lernen wir ja auch noch was Neues dabei - an was wir vielleicht noch nie gedacht haben.

    Live long and prosper!

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


    • Bearbeitet BOfH-666 Dienstag, 2. Oktober 2018 19:21
    Dienstag, 2. Oktober 2018 19:20