Help formatting output

This topic contains 2 replies, has 2 voices, and was last updated by Profile photo of Jeremy Murrah Jeremy Murrah 2 years, 5 months ago.

  • Author
    Posts
  • #16541
    Profile photo of Jeremy Murrah
    Jeremy Murrah
    Participant

    I've got a script that gathers information for a server from a couple of different places. The cmdlets for each location return objects, and I attach those as properties for my main output object. Like this:

    PS C:\scripts> $output
    
    DNSARecord      : @{_ref=record:a/ZG5zLmJpbmRfYSQuX2RlZmF1bHQuY29tLmVwcm9kLHRzY
                      mxkaW5mMDFjb3JwLDEwLjk2LjEwOS4xMzc:servername.domain.com/d
                      efault; ipv4addr=10.10.10.10;
                      Credential=System.Management.Automation.PSCredential;
                      GridServer=DNSServer.domain.com}
    DNSPTRRecord    : @{_ref=record:ptr/ZG5zLmJpbmRfcHRyJC5fZGVmYXVsdC5hcnBhLmluLWF
                      kZHIuMTAuOTYuMTA5LjEzNy50c2JsZGluZjAxY29ycC5lcHJvZC5jb20:10.
                      10.10.10.in-addr.arpa/default; ipv4addr=10.10.10.10;
                      Credential=System.Management.Automation.PSCredential;
                      GridServer=DNSServer.domain.com}
    LandeskAccount  : {Microsoft.PowerShell.Commands.NewWebserviceProxy.Autogenerat
                      edTypes.WebServiceProxy1_mbsdkservice_msgsdk_asmx_wsdl.Device
                      , Microsoft.PowerShell.Commands.NewWebserviceProxy.Autogenera
                      tedTypes.WebServiceProxy1_mbsdkservice_msgsdk_asmx_wsdl.Devic
                      e}
    DNSCNameRecord  :
    ComputerAccount : CN=SERVERNAME,OU=SMS,OU=Test,OU=Servers,DC=eprod,DC=com
    

    Each of the output properties are objects themselves:

    PS C:\scripts> $output.dnsarecord
    
    _ref                ipv4addr            Credential          GridServer
    ----                --------            ----------          ----------
    record:a/ZG5zLmJ... 10.10.10.10       System.Managemen... DNSServer.domain.com
    
    PS C:\scripts> $output.DNSPTRRecord
    
    _ref                ipv4addr            Credential          GridServer
    ----                --------            ----------          ----------
    record:ptr/ZG5zL... 10.10.10.10       System.Managemen... DNSServer.domain.com
    
    PS C:\scripts> $output.LandeskAccount
    
    
    DisplayName                : SERVERNAME
    MaintenanceWindow          :
    LastVulnerabilityScanTime  : 6/26/2014 2:58:50 AM
    LastStartUpTime            : 6/24/2014 9:20:13 AM
    Type                       : Server
    OperatingSystem            : Microsoft Windows Server 2012 R2 Server Standard
                                 Edition (full installation), 64-bit
    OperatingSystemServicePack : 0
    LastHardwareScanTime       : 6/26/2014 1:04:13 AM
    Model                      : ProLiant BL460c G7
    SerialNumber               : MXQ0420X8K
    AgentConfigurationName     : ServerOps
    AgentVersion               : 9.50.3.1
    GUID                       : {2688A755-9424-EA4F-BC46-9259A378D005}
    DeviceName                 : SERVERNAME
    DomainName                 : domain.com
    LastLogin                  :
    IPAddress                  : 010.096.109.137
    SubNetMask                 : 255.255.255.000
    MACAddress                 : 68B599B1DD10
    OSName                     : Microsoft Windows Server 2012 R2 Server Standard
                                 Edition (full installation), 64-bit
    
    PS C:\scripts> $output.ComputerAccount
    
    
    DistinguishedName : CN=SERVERNAME,OU=SMS,OU=Test,OU=Servers,DC=eprod,DC=com
    DNSHostName       : SERVERNAME.domain.com
    Enabled           : True
    Name              : SERVERNAME
    ObjectClass       : computer
    ObjectGUID        : 7eb9f8e7-2034-4649-a310-40725d9cbacf
    SamAccountName    : SERVERNAME$
    SID               : S-1-5-21-1327060583-1562144247-1555438652-151332
    UserPrincipalName :
    

    Is there a way to have the output expand out all the properties for easier viewing? Maybe with a ps1xml file or something? Kind of want it to look like this:

    PS c:\scripts> $output
    
    DNSARecord		:_ref		:record:a/blahblah
    			:ipv4addr	:10.10.10.10
    			:credential	:blah
    			:gridserver	:dnsserver.domain.com
    ComputerAccount	:DistinguishedName	:blah
    			:dnshostname		:servername.domain
    			:SID			:blah
    

    Edit: ok the above is kind of wonky in the editor, but basically just want to expand out the objects in the properties and have it all in one screen. kind of like a select-object -expandproperty * or something.

  • #16542
    Profile photo of Dave Wyatt
    Dave Wyatt
    Moderator

    I don't know of a way to get output like that with the built-in cmdlets. Format-Custom does display the object graph down to a certain depth (2 by default, I believe), but the formatting isn't as user-friendly.

  • #16543
    Profile photo of Jeremy Murrah
    Jeremy Murrah
    Participant

    ok, format-custom is pretty cool. Will have to mess around with that and see what it can do, the depth parameter gets me most of the way there. thanks!

You must be logged in to reply to this topic.