PowerShell Format-NestedList - Ausgabe aller verschachtelten Objekte als verschachtelte Liste vom Typ String

DPXone

Lieutenant
Registriert
Mai 2009
Beiträge
552
Abend Zusammen,

hab euch hier mal wieder eine (meiner Meinung nach) praktische Funktion, die ich erstellt habe, um von Objekten alle verschachtelten Properties ausgeben zu lassen.

Gewöhnlich wird ja nur das erste Level ausgegeben, wenn man die Properties eines Objekt visuell ausgeben will.
Viele Eigenschaften der verschachtelten Objekte fehlen hier einfach oder werden als Array eines Objekttyps (z. B. [System.Object[]]) zurückgegeben.

Das Ganze kommt bei mir unter anderem im Error Handling zum Einsatz, da man damit mit Try()..Catch{} schnell einen Error-Log-Eintrag mit allen Details erstellen kann und ein weiterer Einsatz ist vor allem dann, wenn man mit einem neuen Modul, Klasse, Cmdlet, Funktion, Objekt konfrontriert wird und schnell wissen will, was das zurückgegebene Objekt oder die Klasse so alles hergibt.
"Object & Class Investigation" wäre hiefür wohl ein passender Ausdrück.

Ein paar Anmerkungen:
  1. Mit dem Parameter Depth kann man die Tiefe der zurückgegebenen Objekte angeben.
    Ab 3 dauert der Prozess etwas länger, weshalb ich den Standardwert auf 2 festgelegt habe.

  2. Objekte mit mehreren Properties oder weiteren verschachtelten Objekten werden mit eckigen Klammern visuell dargestellt (z. B. [System.Security.SecurityCriticalAttribute()] )

  3. Sobald eine weitere Auflösung von einem verschachtelten Objekt die Tiefe der Verarbeitung, definiert durch Depth (Standard=2), überschreiten würde, wird der Objekt-Typ in geschweiften Klammern angezeigt:
    {[%objectType%]}.
    Dadurch wird erkennbar, dass das betreffende Objekt weiter aufgelöst werden könnte.

  4. Sollte die weitere Auflösung per Definition (d.h. per Standard in der Funktion) oder per Parameter erzwungen unterbunden werden, wird dem Objekt-Typ noch ein "*" vorangestellt:
    Dadurch wird erkennbar, dass die weitere Auflösung für diese Objekt unterdrückt wurde:
    *{[%objectType%]}
    oder für unterdrückte Inhalte (ohne geschweifte Klammern):
    *[%objectType%]

  5. Mit dem Parameter DisplayObjectPathId werden auch Objekt-Pfad-IDs am Anfang der Zeile ausgegeben, was bei umfangreichen Objekten die Zuordnung zum Parent-Objekt erleichert. -> Siehe Ergebnis [2] unten

  6. Items in Arrays (die ja auf dem gleichem Objekt-Level sitzen) werden mit einem Suffix gekennzeichnet.
    Der Suffix beginnt mit "-" und endet mit dem aktuellem Index des Array-Items.
    z. B .
    0000-3 (bedeutet: Objekt-Pfad 0000 und Array-Item 3 (=4. Item im Array))
PowerShell-Funktion:
PowerShell:
<removed by DPXone>

FAQ:

Wie bereite ich die Nutzung der Funktion als dauerhaft geladenes Modul in der PowerShell ISE vor (damit die Funktion in jeder Session zur Verfügung steht)?:
Dazu einfach PowerShell ISE oder alternativ einfach ein Editor wie z.b. Notepad, Notepad++ öffnen und den Code für das Modul (siehe unten) einfügen.​
Danach das ganze als Format-NestedList.psm1 (Wichtig: Als PSM1 speichern!) unter %UserProfile%\Documents\WindowsPowerShell\Modules\ speichern.​

Wie binde ich die Funktion in jede PowerShell ISE Session ein?
Füge folgende Zeile in deine persönliche PowerShell ISE Profldatei ein (bitte nichts überschreiben!).​
Code:
import-module "$Env:USERPROFILE\Documents\WindowsPowerShell\Modules\Format-NestedList.psm1" -WarningAction Ignore
Diese sollte standardmäßig folgenden Pfad aufweisen (wenn nicht, einfach nach dem rot markierten Dateinamen suchen):​
%UserProfile%\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1



Beispiele:

Als Beispiel mal für einen detaillierten Error-Log, wenn z. B. die Zugriffsberechtigung für ein Verzeichnis unzureichend ist:
Aufruf von 'C:\System Volume Information' mit Try-Catch und Übergabe an 'Format-NestedList':
PowerShell:
Try {
    Get-ChildItem 'C:\System Volume Information' -Recurse -ErrorAction Stop
} Catch {
    Format-NestedList -InputObject $_ -Depth 3
}

Ergebnis ohne Format-NestedList (Standard in PowerShell):
Code:
Get-ChildItem : Access to the path 'C:\System Volume Information' is denied.
At line:166 char:2
+     Get-ChildItem 'C:\System Volume Information' -Recurse -ErrorActio ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (C:\System Volume Information:String) [Get-ChildItem], UnauthorizedAccessException
    + FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand

Ergebnis [1] mit Format-NestedList und $Depth = 3
Code:
[ErrorRecord] Access to the path 'C:\System Volume Information' is denied.
	PSMessageDetails              : 
	Exception                     : System.UnauthorizedAccessException: Access to the path 'C:\System Volume Information' is denied.
	                                    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
	                                    at System.IO.FileSystemEnumerableIterator`1.CommonInit()
	                                    at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
	                                    at System.IO.DirectoryInfo.EnumerateDirectories()
	                                    at Microsoft.PowerShell.Commands.FileSystemProvider.Dir(DirectoryInfo directory, Boolean recurse, UInt32 depth, Boolean nameOnly, ReturnContainers returnContainers)
		Message                       : Access to the path 'C:\System Volume Information' is denied.
		Data                          : System.Collections.ListDictionaryInternal
			Count                         : 0
			Keys                          : 
			IsReadOnly                    : False
			IsFixedSize                   : False
			IsSynchronized                : False
			SyncRoot                      : System.Object
			Values                        : 
		InnerException                : 
		TargetSite                    : Void WinIOError(Int32, System.String)
			Name                          : WinIOError
			DeclaringType                 : {[RuntimeType]} System.IO.__Error
			ReflectedType                 : {[RuntimeType]} System.IO.__Error
			MemberType                    : Method
			MetadataToken                 : 100669075
			Module                        : {[RuntimeModule]} CommonLanguageRuntimeLibrary
			IsSecurityCritical            : True
			IsSecuritySafeCritical        : False
			IsSecurityTransparent         : False
			MethodHandle                  : System.RuntimeMethodHandle
			Attributes                    : PrivateScope, Assembly, Static, HideBySig
			CallingConvention             : Standard
			ReturnType                    : {[RuntimeType]} System.Void
			ReturnTypeCustomAttributes    : {[RuntimeParameterInfo]} Void 
			ReturnParameter               : {[RuntimeParameterInfo]} Void 
			IsGenericMethod               : False
			IsGenericMethodDefinition     : False
			ContainsGenericParameters     : False
			MethodImplementationFlags     : Managed
			IsPublic                      : False
			IsPrivate                     : False
			IsFamily                      : False
			IsAssembly                    : True
			IsFamilyAndAssembly           : False
			IsFamilyOrAssembly            : False
			IsStatic                      : True
			IsFinal                       : False
			IsVirtual                     : False
			IsHideBySig                   : True
			IsAbstract                    : False
			IsSpecialName                 : False
			IsConstructor                 : False
			CustomAttributes              : {[ReadOnlyCollection`1]} [System.Security.SecurityCriticalAttribute()]
		StackTrace                    :    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
		                                    at System.IO.FileSystemEnumerableIterator`1.CommonInit()
		                                    at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
		                                    at System.IO.DirectoryInfo.EnumerateDirectories()
		                                    at Microsoft.PowerShell.Commands.FileSystemProvider.Dir(DirectoryInfo directory, Boolean recurse, UInt32 depth, Boolean nameOnly, ReturnContainers returnContainers)
		HelpLink                      : 
		Source                        : mscorlib
		HResult                       : -2147024891
	TargetObject                  : C:\System Volume Information
	CategoryInfo                  : PermissionDenied: (C:\System Volume Information:String) [Get-ChildItem], UnauthorizedAccessException
		Category                      : PermissionDenied
			value__                       : 18
		Activity                      : Get-ChildItem
		Reason                        : UnauthorizedAccessException
		TargetName                    : C:\System Volume Information
		TargetType                    : String
	FullyQualifiedErrorId         : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand
	ErrorDetails                  : 
	InvocationInfo                : System.Management.Automation.InvocationInfo
		MyCommand                     : Get-ChildItem
			HelpUri                       : https://go.microsoft.com/fwlink/?LinkID=113308
			DLL                           : C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\Microsoft.PowerShell.Commands.Management\v4.0_3.0.0.0__31bf3856ad364e35\Microsoft.PowerShell.Commands.Management.dll
			Verb                          : Get
			Noun                          : ChildItem
			HelpFile                      : Microsoft.PowerShell.Commands.Management.dll-Help.xml
			PSSnapIn                      : 
			Version                       : {[Version]} 3.1.0.0
			ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.GetChildItemCommand
			Definition                    : 
			                                 Get-ChildItem [[-Path] <string[]>] [[-Filter] <string>] [-Include <string[]>] [-Exclude <string[]>] [-Recurse] [-Depth <uint32>] [-Force] [-Name] [-UseTransaction] [<CommonParameters>]
			                                 
			                                 Get-ChildItem [[-Filter] <string>] -LiteralPath <string[]> [-Include <string[]>] [-Exclude <string[]>] [-Recurse] [-Depth <uint32>] [-Force] [-Name] [-UseTransaction] [<CommonParameters>]
			                                 
			DefaultParameterSet           : Items
			OutputType                    : {[ReadOnlyCollection`1]} System.IO.FileInfo | System.IO.DirectoryInfo
			Options                       : ReadOnly
			Name                          : Get-ChildItem
			CommandType                   : Cmdlet
			Source                        : Microsoft.PowerShell.Management
			Visibility                    : Public
			ModuleName                    : Microsoft.PowerShell.Management
			Module                        : {[PSModuleInfo]} Microsoft.PowerShell.Management
			RemotingCapability            : PowerShell
			Parameters                    : {[Dictionary`2]} System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]
			ParameterSets                 : {[ReadOnlyCollection`1]} [[-Path] <string[]>] [[-Filter] <string>] [-Include <string[]>] [-Exclude <string[]>] [-Recurse] [-Depth <uint32>] [-Force] [-Name] [-UseTransaction] [<CommonParameters>] | [[-Filter] <string>] -LiteralPath <string[]> [-Include <string[]>] [-Exclude <string[]>] [-Recurse] [-Depth <uint32>] [-Force] [-Name] [-UseTransaction] [<CommonParameters>]
		BoundParameters               : System.Collections.Generic.Dictionary`2[System.String,System.Object]
			Comparer                      : System.OrdinalComparer
			Count                         : 0
			Keys                          : 
			Values                        : 
			IsReadOnly                    : False
			IsFixedSize                   : False
			SyncRoot                      : System.Object
			IsSynchronized                : False
		UnboundArguments              : 
		ScriptLineNumber              : 2
		OffsetInLine                  : 5
		HistoryId                     : 2
		ScriptName                    : 
		Line                          :     Get-ChildItem 'C:\System Volume Information' -Recurse -ErrorAction Stop
		                                 
		PositionMessage               : At line:2 char:5
		                                 +     Get-ChildItem 'C:\System Volume Information' -Recurse -ErrorActio ...
		                                 +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		PSScriptRoot                  : 
		PSCommandPath                 : 
		InvocationName                : Get-ChildItem
		PipelineLength                : 0
		PipelinePosition              : 0
		ExpectingInput                : False
		CommandOrigin                 : Internal
			value__                       : 1
		DisplayScriptPosition         : 
	ScriptStackTrace              : at <ScriptBlock>, <No file>: line 2
	PipelineIterationInfo         :

Ergebnis [2] mit Format-NestedList, $DisplayObjectPathId, $DisplayFullTypeName and $Depth = 3 (jede Zeile erhält einen aufbauenden Index am Anfang jeder Zeile)
Code:
[System.Management.Automation.ErrorRecord] Access to the path 'C:\System Volume Information' is denied.
0  	PSMessageDetails              : [System.Object]
1  	Exception                     : [System.UnauthorizedAccessException] System.UnauthorizedAccessException: Access to the path 'C:\System Volume Information' is denied.
		                                                                        at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
		                                                                        at System.IO.FileSystemEnumerableIterator`1.CommonInit()
		                                                                        at System.IO.FileSystemEnumerableIterator`1..ctor(String path, ...
10 		Message                       : [System.String] Access to the path 'C:\System Volume Information' is denied.
11 		Data                          : [System.Collections.ListDictionaryInternal] System.Collections.ListDictionaryInternal
110			System.Collections.ICollection: []
12 		InnerException                : [System.Exception]
13 		TargetSite                    : [System.Reflection.RuntimeMethodInfo] Void WinIOError(Int32, System.String)
130			Name                          : [System.String] WinIOError
131			DeclaringType                 : {[System.RuntimeType]} System.IO.__Error
132			ReflectedType                 : {[System.RuntimeType]} System.IO.__Error
133			MemberType                    : [System.Reflection.MemberTypes] Method
134			MetadataToken                 : [System.Int32] 100669075
135			Module                        : {[System.Reflection.RuntimeModule]} CommonLanguageRuntimeLibrary
136			IsSecurityCritical            : [System.Boolean] True
137			IsSecuritySafeCritical        : [System.Boolean] False
138			IsSecurityTransparent         : [System.Boolean] False
139			MethodHandle                  : [System.RuntimeMethodHandle] System.RuntimeMethodHandle
13a			Attributes                    : [System.Reflection.MethodAttributes] PrivateScope, Assembly, Static, HideBySig
13b			CallingConvention             : [System.Reflection.CallingConventions] Standard
13c			ReturnType                    : {[System.RuntimeType]} System.Void
13d			ReturnTypeCustomAttributes    : {[System.Reflection.RuntimeParameterInfo]} Void 
13e			ReturnParameter               : {[System.Reflection.RuntimeParameterInfo]} Void 
13f			IsGenericMethod               : [System.Boolean] False
13g			IsGenericMethodDefinition     : [System.Boolean] False
13h			ContainsGenericParameters     : [System.Boolean] False
13i			MethodImplementationFlags     : [System.Reflection.MethodImplAttributes] Managed
13j			IsPublic                      : [System.Boolean] False
13k			IsPrivate                     : [System.Boolean] False
13l			IsFamily                      : [System.Boolean] False
13m			IsAssembly                    : [System.Boolean] True
13n			IsFamilyAndAssembly           : [System.Boolean] False
13o			IsFamilyOrAssembly            : [System.Boolean] False
13p			IsStatic                      : [System.Boolean] True
13q			IsFinal                       : [System.Boolean] False
13r			IsVirtual                     : [System.Boolean] False
13s			IsHideBySig                   : [System.Boolean] True
13t			IsAbstract                    : [System.Boolean] False
13u			IsSpecialName                 : [System.Boolean] False
13v			IsConstructor                 : [System.Boolean] False
13w			CustomAttributes              : {[System.Collections.ObjectModel.ReadOnlyCollection`1[[System.Reflection.CustomAttributeData, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]]} [System.Security.SecurityCriticalAttribute()]
14 		StackTrace                    : [System.String]    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
			                                                   at System.IO.FileSystemEnumerableIterator`1.CommonInit()
			                                                   at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
			                                                   at System.IO.DirectoryInfo.EnumerateDirectories()
			                                                   at Microsoft.PowerShell.Commands.FileSystemProvider.Dir(DirectoryInfo directory, Boolean recurse, UInt32 depth, Boolean nameOnly, ReturnContainers returnContainers)
15 		HelpLink                      : [System.String]
16 		Source                        : [System.String] mscorlib
17 		HResult                       : [System.Int32] -2147024891
2  	TargetObject                  : [System.String] C:\System Volume Information
3  	CategoryInfo                  : [System.Management.Automation.ErrorCategoryInfo] PermissionDenied: (C:\System Volume Information:String) [Get-ChildItem], UnauthorizedAccessException
30 		Category                      : [System.Management.Automation.ErrorCategory] PermissionDenied
300			value__                       : [System.Int32] 18
31 		Activity                      : [System.String] Get-ChildItem
32 		Reason                        : [System.String] UnauthorizedAccessException
33 		TargetName                    : [System.String] C:\System Volume Information
34 		TargetType                    : [System.String] String
4  	FullyQualifiedErrorId         : [System.String] DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand
5  	ErrorDetails                  : [System.Management.Automation.ErrorDetails]
6  	InvocationInfo                : [System.Management.Automation.InvocationInfo] System.Management.Automation.InvocationInfo
60 		MyCommand                     : [System.Management.Automation.CmdletInfo] Get-ChildItem
600			HelpUri                       : [System.String] https://go.microsoft.com/fwlink/?LinkID=113308
601			DLL                           : [System.String] C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\Microsoft.PowerShell.Commands.Management\v4.0_3.0.0.0__31bf3856ad364e35\Microsoft.PowerShell.Commands.Management.dll
602			Verb                          : [System.String] Get
603			Noun                          : [System.String] ChildItem
604			HelpFile                      : [System.String] Microsoft.PowerShell.Commands.Management.dll-Help.xml
605			PSSnapIn                      : [System.Management.Automation.PSSnapInInfo]
606			Version                       : {[System.Version]} 3.1.0.0
607			ImplementingType              : {[System.RuntimeType]} Microsoft.PowerShell.Commands.GetChildItemCommand
608			Definition                    : [System.String] 
				                                                Get-ChildItem [[-Path] <string[]>] [[-Filter] <string>] [-Include <string[]>] [-Exclude <string[]>] [-Recurse] [-Depth <uint32>] [-Force] [-Name] [-UseTransaction] [<CommonParameters>]
				                                                
				                                                Get-ChildItem [[-Filter] <string>] -LiteralPath <string[]> [-Include <string[]>] [-Exclude <string[]>] [-Recurse] [-Depth <uint32>] [-Force] [-Name] [-UseTransaction] [<CommonParameters>]
				                                                
609			DefaultParameterSet           : [System.String] Items
60a			OutputType                    : @{[System.Collections.ObjectModel.ReadOnlyCollection`1[[System.Management.Automation.PSTypeName, System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]]} System.IO.FileInfo | System.IO.DirectoryInfo
60b			Options                       : [System.Management.Automation.ScopedItemOptions] ReadOnly
60c			Name                          : [System.String] Get-ChildItem
60d			CommandType                   : [System.Management.Automation.CommandTypes] Cmdlet
60e			Source                        : [System.String] Microsoft.PowerShell.Management
60f			Visibility                    : [System.Management.Automation.SessionStateEntryVisibility] Public
60g			ModuleName                    : [System.String] Microsoft.PowerShell.Management
60h			Module                        : {[System.Management.Automation.PSModuleInfo]} Microsoft.PowerShell.Management
60i			RemotingCapability            : [System.Management.Automation.RemotingCapability] PowerShell
60j			Parameters                    : {[System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Management.Automation.ParameterMetadata, System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]]} System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]
60k			ParameterSets                 : @{[System.Collections.ObjectModel.ReadOnlyCollection`1[[System.Management.Automation.CommandParameterSetInfo, System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]]} [[-Path] <string[]>] [[-Filter] <string>] [-Include <string[]>] [-Exclude <string[]>] [-Recurse] [-Depth <uint32>] [-Force] [-Name] [-UseTransaction] [<CommonParameters>] | [[-Filter] <string>] -LiteralPath <string[]> [-Include <string[]>] [-Exclude <string[]>] [-Recurse] [-Depth <uint32>] [-Force] ...
61 		BoundParameters               : [System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]] System.Collections.Generic.Dictionary`2[System.String,System.Object]
610			System.Collections.Generic.Dictionary`2+KeyCollection[string,System.Object]: []
62 		UnboundArguments              : [System.Collections.Generic.List`1[[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]]
63 		ScriptLineNumber              : [System.Int32] 2
64 		OffsetInLine                  : [System.Int32] 5
65 		HistoryId                     : [System.Int64] 1
66 		ScriptName                    : [System.String] 
67 		Line                          : [System.String]     Get-ChildItem 'C:\System Volume Information' -Recurse -ErrorAction Stop
			                                                
68 		PositionMessage               : [System.String] At line:2 char:5
			                                                +     Get-ChildItem 'C:\System Volume Information' -Recurse -ErrorActio ...
			                                                +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
69 		PSScriptRoot                  : [System.String] 
6a 		PSCommandPath                 : [System.String]
6b 		InvocationName                : [System.String] Get-ChildItem
6c 		PipelineLength                : [System.Int32] 0
6d 		PipelinePosition              : [System.Int32] 0
6e 		ExpectingInput                : [System.Boolean] False
6f 		CommandOrigin                 : [System.Management.Automation.CommandOrigin] Internal
6f0			value__                       : [System.Int32] 1
6g 		DisplayScriptPosition         : [System.Management.Automation.Language.IScriptExtent]
7  	ScriptStackTrace              : [System.String] at <ScriptBlock>, <No file>: line 2
8  	PipelineIterationInfo         : [System.Collections.ObjectModel.ReadOnlyCollection`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]]



Ein weiteres Beispiel für die Ausgabe von Diensten, die mit C* beginnen (Ergebnis auf 2 Einträge gekürzt)
PowerShell:
Get-Service 'C*' | Format-NestedList

Ergebnis mit Format-NestedList
PowerShell:
[ServiceController] c2wts
	Name                          : c2wts
	RequiredServices              : 
	CanPauseAndContinue           : False
	CanShutdown                   : False
	CanStop                       : False
	Container                     : 
	DependentServices             : 
	DisplayName                   : Claims to Windows Token Service
	MachineName                   : .
	ServiceHandle                 : 
	ServiceName                   : c2wts
	ServicesDependedOn            : 
	ServiceType                   : Win32OwnProcess
		value__                       : 16
	Site                          : 
	StartType                     : Manual
		value__                       : 3
	Status                        : Stopped
		value__                       : 1
[ServiceController] camsvc
	Name                          : camsvc
	RequiredServices              : 
	CanPauseAndContinue           : False
	CanShutdown                   : False
	CanStop                       : False
	Container                     : 
	DependentServices             : 
	DisplayName                   : Capability Access Manager Service
	MachineName                   : .
	ServiceHandle                 : 
	ServiceName                   : camsvc
	ServicesDependedOn            : 
	ServiceType                   : Win32OwnProcess, Win32ShareProcess
		value__                       : 48
	Site                          : 
	StartType                     : Manual
		value__                       : 3
	Status                        : Stopped
		value__                       : 1

.... and so on .....

Ein weiteres Beispiel für die Ausgabe der Netzwerk-Adapter und einem Filter mit "SkipObjectPath", um die CIM/WMI Eigenschaften zu unterdrücken, die sonst mit ausgegeben werden
PowerShell:
Get-NetAdapter | fnl -DisplayTypeName -SkipObjectPath 'CimInstanceProperties' , 'CimClass' , 'CimSystemProperties'
Ergebnis mit Format-NestedList
PowerShell:
[CimInstance] MSFT_NetAdapter (CreationClassName = "MSFT_NetAdapter", DeviceID = "{8E11635D-6326-4882-BE39-143730E0BAFB}", SystemCreationClassName = "CIM_NetworkPort", SystemName = "Sven-PC")
        MacAddress                    : [String] 74-D4-35-E6-75-DA
        Status                        : [String] Up
        LinkSpeed                     : [String] 1 Gbps
        MediaType                     : [String] 802.3 
        PhysicalMediaType             : [String] 802.3 
        AdminStatus                   : [NET_IF_ADMIN_STATUS] Up
                value__                       : [UInt32] 1
        MediaConnectionState          : [NET_IF_MEDIA_CONNECT_STATE] Connected
                value__                       : [UInt32] 1
        DriverInformation             : [String] Driver Date 2017-08-31 Version 9.0.0.46 NDIS 6.30
        DriverFileName                : [String] e2xw10x64.sys
        NdisVersion                   : [String] 6.30
        ifOperStatus                  : [IF_OPER_STATUS] Up
                value__                       : [UInt32] 1 
        ifAlias                       : [String] Ethernet  
        InterfaceAlias                : [String] Ethernet  
        ifIndex                       : [UInt32] 9
        ifDesc                        : [String] Killer E2200 Gigabit Ethernet Controller
        ifName                        : [String] ethernet_32769
        DriverVersion                 : [String] 9.0.0.46
        LinkLayerAddress              : [String] 74-D4-35-E6-75-DA
        Caption                       : [String]
        Description                   : [String]
        ElementName                   : [String]
        InstanceID                    : [String] {8E11635D-6326-4882-BE39-143730E0BAFB}
        CommunicationStatus           : [UInt16]
        DetailedStatus                : [UInt16]
        HealthState                   : [UInt16]
        InstallDate                   : [CimInstance#DateTime]
        Name                          : [String] Ethernet     
        OperatingStatus               : [UInt16]
        OperationalStatus             : [UInt16[]]
        PrimaryStatus                 : [UInt16]
        StatusDescriptions            : [String[]]
        AvailableRequestedStates      : [UInt16[]]
        EnabledDefault                : [UInt16] 2
        EnabledState                  : [UInt16] 5
        OtherEnabledState             : [String]
        RequestedState                : [UInt16] 12
        TimeOfLastStateChange         : [CimInstance#DateTime]
        TransitioningToState          : [UInt16] 12
        AdditionalAvailability        : [UInt16[]]
        Availability                  : [UInt16]
        CreationClassName             : [String] MSFT_NetAdapter
        DeviceID                      : [String] {8E11635D-6326-4882-BE39-143730E0BAFB}
        ErrorCleared                  : [Boolean]
        ErrorDescription              : [String]
        IdentifyingDescriptions       : [String[]]
        LastErrorCode                 : [UInt32]
        MaxQuiesceTime                : [UInt64]
        OtherIdentifyingInfo          : [String[]]
        PowerManagementCapabilities   : [UInt16[]]
        PowerManagementSupported      : [Boolean]
        PowerOnHours                  : [UInt64]
        StatusInfo                    : [UInt16]
        SystemCreationClassName       : [String] CIM_NetworkPort
        SystemName                    : [String] Sven-PC
        TotalPowerOnHours             : [UInt64]
        MaxSpeed                      : [UInt64]
        OtherPortType                 : [String]
        PortType                      : [UInt16]
        RequestedSpeed                : [UInt64]
        Speed                         : [UInt64] 1000000000
        UsageRestriction              : [UInt16]
        ActiveMaximumTransmissionUnit : [UInt64] 1500
        AutoSense                     : [Boolean]
        FullDuplex                    : [Boolean] True
        LinkTechnology                : [UInt16]
        NetworkAddresses              : [String[]] 74D435E675DA
        OtherLinkTechnology           : [String]
        OtherNetworkPortType          : [String]
        PermanentAddress              : [String] 74D435E675DA
        PortNumber                    : [UInt16] 0
        SupportedMaximumTransmissionUnit: [UInt64]
        AdminLocked                   : [Boolean] False
        ComponentID                   : [String] PCI\VEN_1969&DEV_E091
        ConnectorPresent              : [Boolean] True
        DeviceName                    : [String] \Device\{8E11635D-6326-4882-BE39-143730E0BAFB}
        DeviceWakeUpEnable            : [Boolean] False
        DriverDate                    : [String] 2017-08-31
        DriverDateData                : [UInt64] 131486112000000000
        DriverDescription             : [String] Killer E2200 Gigabit Ethernet Controller
        DriverMajorNdisVersion        : [Byte] 6
        DriverMinorNdisVersion        : [Byte] 30
        DriverName                    : [String] \SystemRoot\System32\drivers\e2xw10x64.sys
        DriverProvider                : [String] Rivet Networks
        DriverVersionString           : [String] 9.0.0.46
        EndPointInterface             : [Boolean] False
        HardwareInterface             : [Boolean] True
        Hidden                        : [Boolean] False
        HigherLayerInterfaceIndices   : [UInt32[]] 15
        IMFilter                      : [Boolean] False
        InterfaceAdminStatus          : [UInt32] 1
        InterfaceDescription          : [String] Killer E2200 Gigabit Ethernet Controller
        InterfaceGuid                 : [String] {8E11635D-6326-4882-BE39-143730E0BAFB}
        InterfaceIndex                : [UInt32] 9
        InterfaceName                 : [String] ethernet_32769
        InterfaceOperationalStatus    : [UInt32] 1
        InterfaceType                 : [UInt32] 6
        iSCSIInterface                : [Boolean] False
        LowerLayerInterfaceIndices    : [UInt32[]]
        MajorDriverVersion            : [UInt16] 6
        MediaConnectState             : [UInt32] 1
        MediaDuplexState              : [UInt32] 2
        MinorDriverVersion            : [UInt16] 0
        MtuSize                       : [UInt32] 1500
        NdisMedium                    : [UInt32] 0
        NdisPhysicalMedium            : [UInt32] 14
        NetLuid                       : [UInt64] 1689399632855040
        NetLuidIndex                  : [UInt32] 32769
        NotUserRemovable              : [Boolean] False
        OperationalStatusDownDefaultPortNotAuthenticated: [Boolean] False
        OperationalStatusDownInterfacePaused: [Boolean] False
        OperationalStatusDownLowPowerState: [Boolean] False
        OperationalStatusDownMediaDisconnected: [Boolean] False
        PnPDeviceID                   : [String] PCI\VEN_1969&DEV_E091&SUBSYS_E0001458&REV_10\4&7ef09b9&0&00E2
        PromiscuousMode               : [Boolean] False
        ReceiveLinkSpeed              : [UInt64] 1000000000
        State                         : [UInt32] 2
        TransmitLinkSpeed             : [UInt64] 1000000000
        Virtual                       : [Boolean] False
        VlanID                        : [UInt16] 0
        WdmInterface                  : [Boolean] False
        PSComputerName                : [String]
        CimClass                      : *{[CimClass]} ROOT/StandardCimv2:MSFT_NetAdapter
        CimInstanceProperties         : *@{[CimPropertiesCollection]}
        CimSystemProperties           : *{[CimSystemProperties]} Microsoft.Management.Infrastructure.CimSystemProperties

Bei Fragen, Anregungen, Problemen oder Verbesserungsvorschläge einfach Posten
 
Zuletzt bearbeitet: (PowerShell Script kommentiert)
  • Gefällt mir
Reaktionen: sklaes und iron_monkey
Offen für ein bißchen Feedback / ein paar Gedanken dazu? :)

- Gibt's einen spezifschen Grund, daß Du Pipelineeingaben explizit ausschließt? Note: Pipelineinput funktioniert ohnehin nicht "einfach so",sondern muß an den(die) Parameter explizit gebunden werden. Du kannst Dir zugehörige Prüfungen daher prinzipiell sparen.

- Nur als Hinweis: begin, process und end in PS bilden "eigentlich" C#-Funktionen des cmdlets (binär) ab und sind damit in sich geschlossen. In PowerShell bekommt man von process aus Zugriff auf begin bzw von end aus Zugriff auf begin und process.
In C# aber nicht. Entsprechend sollte man da ggfs. ein bißchen aufpassen: denn das Konstrukt wie oben wird als cmdlet nicht funktionieren.

- Typprüfung geht in PS besser mit Reflection $object.GetType() (gibt Typobject) bzw über dessen Eigenschaften Name (zB String) und FullName (vollqualifiziert, zB System.Windows.Forms.Form). Die vorliegende Implementierung tut ggfs. Unerwartetes, wenn sie zufällig ein Objekt mit einer Definition für .Length oder .Length() erhält.

- Nicht ganz sicher ob das nach PS durchgereicht wird: In C# hat man die Option, einen Parameter zu verstecken. Man kann ihn nutzen, aber man sieht ihn nicht in der Autovervollständigung oder im Hilfesystem. Wäre vielleicht was für den "Rekursiv-Parameter". Müßtest nur mal gucken, ob sich das auch in Scripts umsetzen läßt.

- Rein von dem, was die Funktion tut, wäre evtl. Format das bessere Verb.

- Insgesamt definitiv ein nettes Helferlein. :) Im Beispiel zB schön zum Catchblock bauen, wenn man nicht weiß, was man genau kriegt und/oder wenn mehr Information in ErrorCategory steckt als in der Ausnahmeklasse selber.

Ich hab für mich ein paar kleine Funktionen gebastelt, die HRESULTs aufschlüsseln und eine CSV-Datei nach dem zugehörigen Fehler durchsuchen. (Für facility 7 ist das nicht notwendig, da hilft win32exception).
 
  • Gefällt mir
Reaktionen: DPXone
RalphS schrieb:
Offen für ein bißchen Feedback / ein paar Gedanken dazu? :)
Immer gerne ;)

RalphS schrieb:
- Gibt's einen spezifschen Grund, daß Du Pipelineeingaben explizit ausschließt? Note: Pipelineinput funktioniert ohnehin nicht "einfach so",sondern muß an den(die) Parameter explizit gebunden werden. Du kannst Dir zugehörige Prüfungen daher prinzipiell sparen.
Die Ausgabe von Objekten (Plural) über die Pipe würde ein unsauberes Bild abgeben, da ja die Ausgabe dann alles untereinander ausgeben würde.
Ich wollte mir aber bei Gelegenheit hierfür noch ein Konzept ausdenken.

RalphS schrieb:
- Nur als Hinweis: begin, process und end in PS bilden "eigentlich" C#-Funktionen des cmdlets (binär) ab und sind damit in sich geschlossen. In PowerShell bekommt man von process aus Zugriff auf begin bzw von end aus Zugriff auf begin und process.
In C# aber nicht. Entsprechend sollte man da ggfs. ein bißchen aufpassen: denn das Konstrukt wie oben wird als cmdlet nicht funktionieren.
Das verstehe ich nicht ganz. Beziehst du dich hier auf meine Built-In Funktion "Get-Properties" in der Begin-Section oder die self-execution?
Ich hab's zumindest erfolgreich via PowershellISEProfile automatisch geladen und getestet.

RalphS schrieb:
- Typprüfung geht in PS besser mit Reflection $object.GetType() (gibt Typobject) bzw über dessen Eigenschaften Name (zB String) und FullName (vollqualifiziert, zB System.Windows.Forms.Form). Die vorliegende Implementierung tut ggfs. Unerwartetes, wenn sie zufällig ein Objekt mit einer Definition für .Length oder .Length() erhält.
Stimmt. Aber ich habe gerade festgestellt, dass generell die Standard-Typen int, double, etc mit meiner Funktion falsch bzw. gar nicht ausgegeben wurden.
Hab das Script nun nochmal abgeändert. Nun sieht die Ausgabe auch nochmal anders aus, da Strings, etc nun nochmal ein Level weiter eingerückt angezeigt werden (siehe aktualisiertes Beispiel oben).
Was ich allerdings noch nicht sauber hinbekommen habe, ist, die Standard-Typen irgendwie anders zu behandeln als mit -replace '(?:\*)|(?:Length)'(könnte natürlich auch einfach alle via -in ..." abfragen, aber Custom-Types gibt's ja auch noch)
Werde aber noch weiter testen und die Ausgabe noch ein bisschen optimieren, da mich besonders die separate Auflistung von Strings, Int, etc in einer weiteren Zeile nicht anspricht.

RalphS schrieb:
- Nicht ganz sicher ob das nach PS durchgereicht wird: In C# hat man die Option, einen Parameter zu verstecken. Man kann ihn nutzen, aber man sieht ihn nicht in der Autovervollständigung oder im Hilfesystem. Wäre vielleicht was für den "Rekursiv-Parameter". Müßtest nur mal gucken, ob sich das auch in Scripts umsetzen läßt.
Ja. Der Parameter, der nicht verwendet werden sollte, sollte tatsächlich nicht sichtbar sein.
Hab allerdings auch noch garnicht weiter recherchiert, ob das möglich wäre.
Mach ich aber aus Interesse demnächst noch.

RalphS schrieb:
- Rein von dem, was die Funktion tut, wäre evtl. Format das bessere Verb.
Habs geändert ;)
War irgendwie im Kopf bei "Out-String" und hab deshalb "Out" als Verb genommen.

Komplett ausgefeilt war die Funktion natürlich noch nicht ;)
War eher eine schnelle Aktion, aber vielen Dank für dein Feedback.
 
Zuletzt bearbeitet:
Hab die Funktion nochmal angepasst.
Nun ist die Ausgabe etwas klarer und bei jedem Wert wird nun auch der [Typ] angezeigt.
Hab es oben entsprechend angepasst (siehe Ausgabe im Beispiel).
Zudem wird nun auch der Parameter $nextDepth ausgeblendet.
 
Zuletzt bearbeitet:
- re: begin, process, und end in Powershell:

- das war einfach ein Hinweis. "Richtige" cmdlets führen diese drei "Blöcke" als benutzerspezifische Methoden von Cmdlet oder PsCmdlet aus (protected override void...) mit dem Ergebnis, daß man eben nicht von process oder end auf Inhalte von begin zugreifen kann. Dies im Gegensatz zu Powershell, wo das alles erstmal pauschal global ist. Sprich, die Verwendung von begin für die Initialisierung von Objekten kann man zwar so machen, sollte man aber nur SEHR bedingt (und auch nur dann, wenn die implementierte Funktionalität in begin UNabhängig ist von sonstwelcher Eingabe).

Kann man in PS natürlich so handhaben. Mach ich auch ab und zu. Ist aber eigentlich schlechter Stil.

- Typisch für Format-* cmdlets ist, daß Information verlorengeht - wie bei Dir in Deiner Funktion ja auch. Entsprechend könntest Du pro Objekt irgendeine format-spezifische Einrahmung gestalten, die das Bild eines Eingabeobjekts einfaßt und logisch von anderen Eingabeobjekten abtrennt.

Ausgabe mit vorgestelltem Komma ( , $output) wäre eine Option: das verhindert automatisches Ausrollen von Listen während der Ausgabe und man kriegt dann eine Auflistung von Auflistungen und nicht eine Auflistung von Objekten.

Du kannst aber auch einfach ein paar Strichels malen oder der Ausgabe ein simples "Typ: <vollqualifizierter Typ> + CRLF vorstellen. Halt irgendetwas, das Eingabeobjekte erkennbar abgrenzt.

Natürlich ist das keine "Pflicht". Es ist nur sehr viel intuitiver und flinker, $object|Format-NestedOutput sagen zu können. Natürlich muß man bedenken, daß das, was dann in der Pipeline ankommt, nicht mehr zur Weiterverarbeitung taugt: aber das gilt pauschal für alle Format-* cmdlets (weswegen dieses Verb sich auch so gut anbietet für diese Funktion).



- re: Get-Properties, gibts da einen Grund, daß Du where-object vermeidest? Das wäre, bild ich mir ein, der einfachste Weg. Sowas in dieser Form:
PowerShell:
Function Get-Properties
 {
#.description
# list properties but remove properties '*' and 'Length' of objects returned while pipe-ing #(like returned for [String] and [Int])
Param
(
[object] $In
)               
                $in |
                Select * |
                Get-Member -MemberType Properties |
 ? { '*', 'Length' -notcontains $_.Name }  |
 Select -ExpandProperty Name -Unique 
            }

wobei da, wie Du selbst anmerkst, noch eine Typabfrage rein könnte. Müßte man schauen wie; denkbar wäre, zu prüfen, ob das Eingabeobjekt skalar ist oder nicht und wenn ja, ob es numerisch/bool/.... ist und dementsprechend Besonderheiten anstellen.

[System.IO.FileInfo] kennt auch eine Eigenschaft Length: das ist da die Größe der Datei in Bytes. Die willst Du ja nicht einfach unter den Tisch kehren.

Replace brauchst Du eigentlich nur, wenn Du wirklich Eingabe*daten* verändern mußt. Ansonsten reicht der -f Operator (string.Format in c#). Der kann "alles" einschließlich Alignment, Typumwandlung, Auffüllen mit Platzhaltern und je nach Situation auch verschiedene Ausgabeformen, zB hexadecimal, octal oder decimal oder gemäß Währungsformatierung, ohne daß man da groß was manipulieren müßte.
 
@RalphS :
Also ich hab die Funktion nochmal angepasst und das Select-Statement entfernt und die "Get-Member" um ein "-Force" erweitert.
Dadurch umgehe ich das Problem mit den Basis-Typen wie String, Int und Co.
Jetzt wird Length immer mit ausgegeben.
PowerShell:
Format-NestedObject 'test'

[String] test
    Length                        : [Int32] 4

Allerdings muss ich für den Pipeline Input den Process-Block komplett über den Haufen werfen, wenn ich Pipeline Input erlaube, da ich ja jeden Input über die Pipe einzeln bekomme und somit nicht von Anfang an erfahre, wieviele Objekte enthalten sind, d. h. erstes übergebenes Objekt = Count = 1 obwohl der Max-Count eventuell 20 ist.
Der $HighLevelObjectsCount muss somit erst via ForEach im Process-Block kalkuliert werden.
Das würde natürlich dann dazu führen, dass ich im Process-Block nur die Objekte bündle und dann den aktuellen Begin-Block und Process-Block in den End-Block verschiebe.
 
Zuletzt bearbeitet:
Ja, da müßtest Du ggfs. aufpassen: die Pipeline liefert die einzelnen Objekte wenn Du eine Auflistung übergibst.

Wobei.... ich grad nicht sicher bin, wie's aussieht, wenn Du den Pipeline-fähigen Parameter selber Auflistungen annehmen läßt, also object[] oder List[object] oder IEnumerable[object] oder Vergleichbares. Da müßtest Du schauen.

Ansonsten.... bleibt wirklich nur die Option, Format-... -Inputobject $list zu verwenden und $list | Format-... entweder zu vermeiden oder sonst irgendwie zu schauen, wie man das vernünftig angehen könnte.

Wie ursprünglich gesagt, es ist ja nicht "Pflicht", eine Funktion pipelinefähig zu machen. Manchmal gibt es gute Gründe dafür, daß nicht, und die von Dir erwähnte Situation mag durchaus so ein guter Grund sein.

Kommt halt, wie so oft, "darauf an", ob Du $a, $b, $c | Format-Nestedobject sagen können willst oder ob $a selbst bereits eine Auflistung ist und so am Ende nicht ganz das herauskommt, was Du eigentlich wolltest.


Wenn ich aber drüber nachdenke, dann muß es eigentlich irgendwie gehen. Mit Get-Member geht's ja schließlich auch, daß man da eine Auflistung vorne reinsteckt und hinten Infos über die Auflistung und eben NICHT über die einzelnen Elemente dieser herauskommen.
 
Hab jetzt mal ein bisschen rumprobiert den Pipeline-Input hinzubekommen, bin leider bisher gescheitert.
Hab allerdings noch einen neuen Parameter "$DiscardNestedObjectPath" hinzugefügt.

Dadurch lässt sich durch Angabe von Objekt-Pfaden (=Property; ausgehend von der Basis) bestimmte Properties unterdrücken.
Ich hab durch einen Test von z. B. "Format-NestedObject ((get-item C:\).gettype())" festgestellt, dass der Output enorm ist.

Durch den Parameter kann man nun gezielt Unterobjekte durch Angabe des Pfades verwerfen.
z. B. (BaseType wird komplett verworfen; Assembly wird mit Ausnahme der definierten Sub-Properties ausgegeben)
PowerShell:
Format-NestedObject ((get-item C:\).gettype()) -DiscardNestedObjectPath 'BaseType' , 'Assembly.CustomAttributes' , 'Assembly.DefinedTypes' , 'Assembly.DeclaredMembers' , 'Assembly.ExportedTypes'

Zudem werden nun die Array-Objekte auf gleicher Ebene durch "----" getrennt.

Die Funktion wird demnächst noch besser kommentiert und auch um einen Help-Text erweitert. ;)
 
Zuletzt bearbeitet:
Ja wie gesagt, ist ja nicht kritisch und manchmal paßt es mit dem Pipelining einfach nicht recht. Wenn es einfach ein proof-of-concept sein soll, kannst Du natürlich erstmal eine der kleinen Helferfunktionen nehmen und die auf Pipelineinput "hochrüsten" und dann gucken.

Und vielleicht die Signatur(en) derer erweitern (oder ändern) sodaß -replace überflüssig wird. Eigenschaftsname und -wert hast Du ja schon, ebenso wie alle anderen Variablen, die für die Ausgabe erforderlich sind; also übergib die und formatiere einfach eine Ausgabezeile.

Protip, auf diese Art und Weise rufst Du implizit die .ToString()-Methode jedes Arguments auf, das nicht selbst ein String ist. Auf die Art und Weise läßt sich ggfs. ein vorformatierter Wert ausgeben bzw. ein generischer unterdrücken:

PowerShell:
(get-date).tostring()
# 13/04/2019 21:33:03

 @().ToString()
System.Object[]
 
Ich hab der Funktion jetzt mal eine Kommentar-basierte Hilfe (Synopsis, etc) verpasst.

Was mich allerdings noch stutzig macht ist die Ausgabe von XML, wenn ein Paramter den Namen "Item" hat.
Der Parameter "Item" ist hier wohl irgendwie ein Built-In Name, da bei der Verwendung in der XML nichts ausgegeben wird, da der Parameter nicht als "Property" auftaucht, sondern als "ParameterizedProperty".

Ändere ich allerdings den Namen von "Item" zu "Item2" läuft meine Funktion ohne Probleme.

Jemand eine Idee wie man das umgehen kann?

Als Beispiel eine XML von Google (XML im Anhang):
PowerShell:
[xml] $xml = Get-Content "C:\temp\donuts.xml" -Encoding UTF8 
Format-NestedObject $xml -max 7
 

Anhänge

  • donuts.zip
    636 Bytes · Aufrufe: 459
Zuletzt bearbeitet:
DPXone schrieb:
Ändere ich allerdings den Namen von "Item" zu "Item2" läuft meine Funktion ohne Probleme.
Dann hast du sehr wahrscheinlich das Modul "NTFSSecurity" installiert.
Dann wird das ursprüngliche "Item-cmdlet" durch das darin enthaltene "Item2-cmdlet" ersetzt.
 
Micha45 schrieb:
Dann hast du sehr wahrscheinlich das Modul "NTFSSecurity" installiert.
Dann wird das ursprüngliche "Item-cmdlet" durch das darin enthaltene "Item2-cmdlet" ersetzt.

Nein, das Modul hab ich mal nicht installiert.
Aber meinst du damit, dass ein geladenes Modul die Ausgabe von "Get-Member" von Objekten beeinflusst und eine Art Overload verursacht?
Wäre in meinen Augen ja irgendwie sehr unberechenbar was den Abruf von Properties angeht.
 
Das ist ein "Problem" von ParametrizedProperty.

Die hast Du zB bei IEnumerable und allem, was das implementiert.

ParametrizedProperties sind nicht in dem Sinne Eigenschaften. Eher eine Art Hybrid. Und konkret Item adressiert ein Element aus IEnumerable.

Liste A, B, C

und dann ist Liste.Item(0) das A, Liste.Item(1) das B und so weiter.
 
RalphS schrieb:
Liste A, B, C

und dann ist Liste.Item(0) das A, Liste.Item(1) das B und so weiter
Ich ging davon aus, dass es bei dem genannten Problem um das cmdlet "Get-Item" bzw. Get-Item2 und nicht um die Aufzählung gleichnamiger Items geht.
Hatte ich wohl falsch verstanden.
 
Macht gar nix :)

Das ist bei PS irgendwann wirklich irritierend, daß es da ständig namentliche Überlappungen gibt. Da ist niemand davor gefeit, das eine mit dem anderen zu verwechseln. Besonders toll bei so Dingen wie .Add(), die je nach Kontext mal void und mal int zurückliefern und dann sucht man sich den Wolf, wo die 5 in der Pipeline herkommt.

Wobei das mit dem "Item2" und sonst mit dem "Ziffer dran und gut" sauer aufstößt. Das widerspricht allen PS-Paradigmen. Leider ist aber noch nicht großflächig angekommen, daß man cmdlets "absolut" referenzieren kann:

Module1\Get-Item ruft die Funktion Get-Item aus dem Modul Module1 auf.
Module2\Get-Item ruft die Funktion Get-Item aus dem Modul Module2 auf.

Das ist dann kontextunabhängig.
 
  • Gefällt mir
Reaktionen: Micha45
RalphS schrieb:
Wobei das mit dem "Item2" und sonst mit dem "Ziffer dran und gut" sauer aufstößt.

Ohja ...


So. Neues Update.
Nun funktioniert auch der Pipeline-Input!
z. B.
PowerShell:
Get-ChildItem C:\  | Format-NestedObject

Output mit Standard- $maxDepth = 2 als Spoiler, da sonst zu viel ...
PowerShell:
[DirectoryInfo] AdwCleaner
	LinkType                      : 
	Mode                          : d-----
	Target                        : 
	PSChildName                   : AdwCleaner
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\AdwCleaner
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory, NotContentIndexed
		value__                       : 8208
	CreationTime                  : 09.12.2017 21:03:44
	CreationTimeUtc               : 09.12.2017 20:03:44
	Exists                        : True
	Extension                     : 
	FullName                      : C:\AdwCleaner
	LastAccessTime                : 27.07.2018 22:09:54
	LastAccessTimeUtc             : 27.07.2018 20:09:54
	LastWriteTime                 : 27.07.2018 22:09:54
	LastWriteTimeUtc              : 27.07.2018 20:09:54
	Name                          : AdwCleaner
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : AdwCleaner
[DirectoryInfo] BCD_Backup
	LinkType                      : 
	Mode                          : d-----
	Target                        : 
	PSChildName                   : BCD_Backup
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\BCD_Backup
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory, NotContentIndexed
		value__                       : 8208
	CreationTime                  : 10.08.2016 19:11:18
	CreationTimeUtc               : 10.08.2016 17:11:18
	Exists                        : True
	Extension                     : 
	FullName                      : C:\BCD_Backup
	LastAccessTime                : 10.08.2016 19:11:18
	LastAccessTimeUtc             : 10.08.2016 17:11:18
	LastWriteTime                 : 10.08.2016 19:11:18
	LastWriteTimeUtc              : 10.08.2016 17:11:18
	Name                          : BCD_Backup
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : BCD_Backup
[DirectoryInfo] cygwin64
	LinkType                      : 
	Mode                          : d-----
	Target                        : 
	PSChildName                   : cygwin64
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\cygwin64
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory, NotContentIndexed
		value__                       : 8208
	CreationTime                  : 07.10.2017 11:05:16
	CreationTimeUtc               : 07.10.2017 09:05:16
	Exists                        : True
	Extension                     : 
	FullName                      : C:\cygwin64
	LastAccessTime                : 28.04.2019 12:21:14
	LastAccessTimeUtc             : 28.04.2019 10:21:14
	LastWriteTime                 : 07.10.2017 11:09:17
	LastWriteTimeUtc              : 07.10.2017 09:09:17
	Name                          : cygwin64
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : cygwin64
[DirectoryInfo] Fiddler
	LinkType                      : 
	Mode                          : d-----
	Target                        : 
	PSChildName                   : Fiddler
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\Fiddler
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory, NotContentIndexed
		value__                       : 8208
	CreationTime                  : 24.02.2018 08:13:27
	CreationTimeUtc               : 24.02.2018 07:13:27
	Exists                        : True
	Extension                     : 
	FullName                      : C:\Fiddler
	LastAccessTime                : 24.02.2018 08:13:32
	LastAccessTimeUtc             : 24.02.2018 07:13:32
	LastWriteTime                 : 24.02.2018 08:13:32
	LastWriteTimeUtc              : 24.02.2018 07:13:32
	Name                          : Fiddler
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : Fiddler
[DirectoryInfo] Games
	LinkType                      : 
	Mode                          : d-----
	Target                        : 
	PSChildName                   : Games
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\Games
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory, NotContentIndexed
		value__                       : 8208
	CreationTime                  : 30.07.2018 12:03:02
	CreationTimeUtc               : 30.07.2018 10:03:02
	Exists                        : True
	Extension                     : 
	FullName                      : C:\Games
	LastAccessTime                : 28.04.2019 12:28:04
	LastAccessTimeUtc             : 28.04.2019 10:28:04
	LastWriteTime                 : 30.07.2018 13:53:15
	LastWriteTimeUtc              : 30.07.2018 11:53:15
	Name                          : Games
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : Games
[DirectoryInfo] Intel
	LinkType                      : 
	Mode                          : d-----
	Target                        : 
	PSChildName                   : Intel
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\Intel
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory, NotContentIndexed
		value__                       : 8208
	CreationTime                  : 28.04.2016 18:06:35
	CreationTimeUtc               : 28.04.2016 16:06:35
	Exists                        : True
	Extension                     : 
	FullName                      : C:\Intel
	LastAccessTime                : 22.08.2016 17:38:36
	LastAccessTimeUtc             : 22.08.2016 15:38:36
	LastWriteTime                 : 22.08.2016 17:38:36
	LastWriteTimeUtc              : 22.08.2016 15:38:36
	Name                          : Intel
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : Intel
[DirectoryInfo] logs
	LinkType                      : 
	Mode                          : d-----
	Target                        : 
	PSChildName                   : logs
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\logs
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory, NotContentIndexed
		value__                       : 8208
	CreationTime                  : 09.05.2016 17:03:18
	CreationTimeUtc               : 09.05.2016 15:03:18
	Exists                        : True
	Extension                     : 
	FullName                      : C:\logs
	LastAccessTime                : 06.06.2016 10:16:54
	LastAccessTimeUtc             : 06.06.2016 08:16:54
	LastWriteTime                 : 06.06.2016 10:16:54
	LastWriteTimeUtc              : 06.06.2016 08:16:54
	Name                          : logs
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : logs
[DirectoryInfo] PerfLogs
	LinkType                      : 
	Mode                          : d-----
	Target                        : 
	PSChildName                   : PerfLogs
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\PerfLogs
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory
		value__                       : 16
	CreationTime                  : 15.09.2018 09:33:50
	CreationTimeUtc               : 15.09.2018 07:33:50
	Exists                        : True
	Extension                     : 
	FullName                      : C:\PerfLogs
	LastAccessTime                : 15.09.2018 09:33:50
	LastAccessTimeUtc             : 15.09.2018 07:33:50
	LastWriteTime                 : 15.09.2018 09:33:50
	LastWriteTimeUtc              : 15.09.2018 07:33:50
	Name                          : PerfLogs
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : PerfLogs
[DirectoryInfo] Portable
	LinkType                      : 
	Mode                          : d-----
	Target                        : 
	PSChildName                   : Portable
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\Portable
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory, NotContentIndexed
		value__                       : 8208
	CreationTime                  : 18.11.2017 18:58:49
	CreationTimeUtc               : 18.11.2017 17:58:49
	Exists                        : True
	Extension                     : 
	FullName                      : C:\Portable
	LastAccessTime                : 18.11.2017 18:59:01
	LastAccessTimeUtc             : 18.11.2017 17:59:01
	LastWriteTime                 : 18.11.2017 18:59:01
	LastWriteTimeUtc              : 18.11.2017 17:59:01
	Name                          : Portable
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : Portable
[DirectoryInfo] Program Files
	LinkType                      : 
	Mode                          : d-r---
	Target                        : 
	PSChildName                   : Program Files
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\Program Files
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : ReadOnly, Directory
		value__                       : 17
	CreationTime                  : 15.09.2018 09:33:50
	CreationTimeUtc               : 15.09.2018 07:33:50
	Exists                        : True
	Extension                     : 
	FullName                      : C:\Program Files
	LastAccessTime                : 30.04.2019 14:30:44
	LastAccessTimeUtc             : 30.04.2019 12:30:44
	LastWriteTime                 : 30.04.2019 14:30:44
	LastWriteTimeUtc              : 30.04.2019 12:30:44
	Name                          : Program Files
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : Program Files
[DirectoryInfo] Program Files (x86)
	LinkType                      : 
	Mode                          : d-r---
	Target                        : 
	PSChildName                   : Program Files (x86)
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\Program Files (x86)
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : ReadOnly, Directory
		value__                       : 17
	CreationTime                  : 15.09.2018 09:33:50
	CreationTimeUtc               : 15.09.2018 07:33:50
	Exists                        : True
	Extension                     : 
	FullName                      : C:\Program Files (x86)
	LastAccessTime                : 28.04.2019 11:54:17
	LastAccessTimeUtc             : 28.04.2019 09:54:17
	LastWriteTime                 : 28.04.2019 11:54:17
	LastWriteTimeUtc              : 28.04.2019 09:54:17
	Name                          : Program Files (x86)
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : Program Files (x86)
[DirectoryInfo] PS-Scripts
	LinkType                      : 
	Mode                          : d-----
	Target                        : 
	PSChildName                   : PS-Scripts
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\PS-Scripts
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory, NotContentIndexed
		value__                       : 8208
	CreationTime                  : 04.02.2017 16:42:54
	CreationTimeUtc               : 04.02.2017 15:42:54
	Exists                        : True
	Extension                     : 
	FullName                      : C:\PS-Scripts
	LastAccessTime                : 22.10.2017 10:45:15
	LastAccessTimeUtc             : 22.10.2017 08:45:15
	LastWriteTime                 : 22.10.2017 10:45:15
	LastWriteTimeUtc              : 22.10.2017 08:45:15
	Name                          : PS-Scripts
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : PS-Scripts
[DirectoryInfo] SAP
	LinkType                      : 
	Mode                          : d-----
	Target                        : 
	PSChildName                   : SAP
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\SAP
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory, NotContentIndexed
		value__                       : 8208
	CreationTime                  : 13.01.2017 17:44:56
	CreationTimeUtc               : 13.01.2017 16:44:56
	Exists                        : True
	Extension                     : 
	FullName                      : C:\SAP
	LastAccessTime                : 15.03.2017 17:18:29
	LastAccessTimeUtc             : 15.03.2017 16:18:29
	LastWriteTime                 : 15.03.2017 17:18:29
	LastWriteTimeUtc              : 15.03.2017 16:18:29
	Name                          : SAP
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : SAP
[DirectoryInfo] Steam
	LinkType                      : 
	Mode                          : d-----
	Target                        : 
	PSChildName                   : Steam
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\Steam
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory, NotContentIndexed
		value__                       : 8208
	CreationTime                  : 22.03.2016 12:57:53
	CreationTimeUtc               : 22.03.2016 11:57:53
	Exists                        : True
	Extension                     : 
	FullName                      : C:\Steam
	LastAccessTime                : 28.04.2019 12:21:44
	LastAccessTimeUtc             : 28.04.2019 10:21:44
	LastWriteTime                 : 22.03.2016 13:10:46
	LastWriteTimeUtc              : 22.03.2016 12:10:46
	Name                          : Steam
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : Steam
[DirectoryInfo] Symbols
	LinkType                      : 
	Mode                          : da----
	Target                        : 
	PSChildName                   : Symbols
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\Symbols
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory, Archive, NotContentIndexed
		value__                       : 8240
	CreationTime                  : 24.03.2016 11:05:56
	CreationTimeUtc               : 24.03.2016 10:05:56
	Exists                        : True
	Extension                     : 
	FullName                      : C:\Symbols
	LastAccessTime                : 28.04.2019 12:25:28
	LastAccessTimeUtc             : 28.04.2019 10:25:28
	LastWriteTime                 : 10.06.2017 21:25:46
	LastWriteTimeUtc              : 10.06.2017 19:25:46
	Name                          : Symbols
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : Symbols
[DirectoryInfo] SymCache
	LinkType                      : 
	Mode                          : d-----
	Target                        : 
	PSChildName                   : SymCache
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\SymCache
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory, NotContentIndexed
		value__                       : 8208
	CreationTime                  : 22.05.2017 23:15:17
	CreationTimeUtc               : 22.05.2017 21:15:17
	Exists                        : True
	Extension                     : 
	FullName                      : C:\SymCache
	LastAccessTime                : 22.05.2017 23:15:17
	LastAccessTimeUtc             : 22.05.2017 21:15:17
	LastWriteTime                 : 22.05.2017 23:15:17
	LastWriteTimeUtc              : 22.05.2017 21:15:17
	Name                          : SymCache
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : SymCache
[DirectoryInfo] temp
	LinkType                      : 
	Mode                          : d-----
	Target                        : 
	PSChildName                   : temp
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\temp
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory, NotContentIndexed
		value__                       : 8208
	CreationTime                  : 30.03.2016 14:21:40
	CreationTimeUtc               : 30.03.2016 12:21:40
	Exists                        : True
	Extension                     : 
	FullName                      : C:\temp
	LastAccessTime                : 28.04.2019 11:32:28
	LastAccessTimeUtc             : 28.04.2019 09:32:28
	LastWriteTime                 : 28.04.2019 11:32:28
	LastWriteTimeUtc              : 28.04.2019 09:32:28
	Name                          : temp
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : temp
[DirectoryInfo] tmp
	LinkType                      : 
	Mode                          : d-----
	Target                        : 
	PSChildName                   : tmp
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\tmp
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory, NotContentIndexed
		value__                       : 8208
	CreationTime                  : 10.05.2016 10:20:36
	CreationTimeUtc               : 10.05.2016 08:20:36
	Exists                        : True
	Extension                     : 
	FullName                      : C:\tmp
	LastAccessTime                : 29.04.2017 14:28:39
	LastAccessTimeUtc             : 29.04.2017 12:28:39
	LastWriteTime                 : 29.04.2017 14:28:39
	LastWriteTimeUtc              : 29.04.2017 12:28:39
	Name                          : tmp
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : tmp
[DirectoryInfo] Users
	LinkType                      : 
	Mode                          : d-r---
	Target                        : 
	PSChildName                   : Users
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\Users
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : ReadOnly, Directory
		value__                       : 17
	CreationTime                  : 15.09.2018 08:09:26
	CreationTimeUtc               : 15.09.2018 06:09:26
	Exists                        : True
	Extension                     : 
	FullName                      : C:\Users
	LastAccessTime                : 28.04.2019 11:32:48
	LastAccessTimeUtc             : 28.04.2019 09:32:48
	LastWriteTime                 : 28.04.2019 11:32:48
	LastWriteTimeUtc              : 28.04.2019 09:32:48
	Name                          : Users
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : Users
[DirectoryInfo] Windows
	LinkType                      : 
	Mode                          : d-----
	Target                        : 
	PSChildName                   : Windows
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\Windows
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory
		value__                       : 16
	CreationTime                  : 15.09.2018 08:09:26
	CreationTimeUtc               : 15.09.2018 06:09:26
	Exists                        : True
	Extension                     : 
	FullName                      : C:\Windows
	LastAccessTime                : 28.04.2019 11:38:15
	LastAccessTimeUtc             : 28.04.2019 09:38:15
	LastWriteTime                 : 28.04.2019 11:38:15
	LastWriteTimeUtc              : 28.04.2019 09:38:15
	Name                          : Windows
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : Windows
[DirectoryInfo] Windows.old
	LinkType                      : 
	Mode                          : d-----
	Target                        : 
	PSChildName                   : Windows.old
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : True
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\Windows.old
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Directory, NotContentIndexed
		value__                       : 8208
	CreationTime                  : 28.04.2019 12:30:59
	CreationTimeUtc               : 28.04.2019 10:30:59
	Exists                        : True
	Extension                     : .old
	FullName                      : C:\Windows.old
	LastAccessTime                : 28.04.2019 11:38:42
	LastAccessTimeUtc             : 28.04.2019 09:38:42
	LastWriteTime                 : 28.04.2019 11:38:42
	LastWriteTimeUtc              : 28.04.2019 09:38:42
	Name                          : Windows.old
	Parent                        : 
	Root                          : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	BaseName                      : Windows.old
[FileInfo] backgroundDefault.jpg
	LinkType                      : 
	Mode                          : -a----
	Target                        : 
	PSChildName                   : backgroundDefault.jpg
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : False
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\backgroundDefault.jpg
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Archive, NotContentIndexed
		value__                       : 8224
	CreationTime                  : 18.05.2016 21:32:50
	CreationTimeUtc               : 18.05.2016 19:32:50
	Directory                     : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	DirectoryName                 : C:\
	Exists                        : True
	Extension                     : .jpg
	FullName                      : C:\backgroundDefault.jpg
	IsReadOnly                    : False
	LastAccessTime                : 18.05.2016 21:32:50
	LastAccessTimeUtc             : 18.05.2016 19:32:50
	LastWriteTime                 : 16.05.2015 02:06:41
	LastWriteTimeUtc              : 16.05.2015 00:06:41
	Length                        : 180626
	Name                          : backgroundDefault.jpg
	BaseName                      : backgroundDefault
	VersionInfo                   : File:             C:\backgroundDefault.jpg
	                                InternalName:     
	                                OriginalFilename: 
	                                FileVersion:      
	                                FileDescription:  
	                                Product:          
	                                ProductVersion:   
	                                Debug:            False
	                                Patched:          False
	                                PreRelease:       False
	                                PrivateBuild:     False
	                                SpecialBuild:     False
	                                Language:         
	                                
		Comments                      : 
		CompanyName                   : 
		FileBuildPart                 : 0
		FileDescription               : 
		FileMajorPart                 : 0
		FileMinorPart                 : 0
		FileName                      : C:\backgroundDefault.jpg
		FilePrivatePart               : 0
		FileVersion                   : 
		InternalName                  : 
		IsDebug                       : False
		IsPatched                     : False
		IsPreRelease                  : False
		IsPrivateBuild                : False
		IsSpecialBuild                : False
		Language                      : 
		LegalCopyright                : 
		LegalTrademarks               : 
		OriginalFilename              : 
		PrivateBuild                  : 
		ProductBuildPart              : 0
		ProductMajorPart              : 0
		ProductMinorPart              : 0
		ProductName                   : 
		ProductPrivatePart            : 0
		ProductVersion                : 
		SpecialBuild                  : 
		FileVersionRaw                : {[Version]} 0.0.0.0
		ProductVersionRaw             : {[Version]} 0.0.0.0
[FileInfo] StartHidden_OfficeBackgroundTaskHandlerRegistration.ps1
	LinkType                      : 
	Mode                          : -a----
	Target                        : 
	PSChildName                   : StartHidden_OfficeBackgroundTaskHandlerRegistration.ps1
	PSDrive                       : C
		Credential                    : {[PSCredential]} System.Management.Automation.PSCredential
		CurrentLocation               : WINDOWS\system32
		Description                   : OS
		DisplayRoot                   : 
		MaximumSize                   : 
		Name                          : C
		Provider                      : {[ProviderInfo]} Microsoft.PowerShell.Core\FileSystem
		Root                          : C:\
		Free                          : 140700827648
		Used                          : 319077851136
	PSIsContainer                 : False
	PSParentPath                  : Microsoft.PowerShell.Core\FileSystem::C:\
	PSPath                        : Microsoft.PowerShell.Core\FileSystem::C:\StartHidden_OfficeBackgroundTaskHandlerRegistration.ps1
	PSProvider                    : Microsoft.PowerShell.Core\FileSystem
		Capabilities                  : Filter, ShouldProcess, Credentials
		Description                   : 
		Drives                        : {[Collection`1]} C D F
		HelpFile                      : System.Management.Automation.dll-Help.xml
		Home                          : C:\Users\scht33v
		ImplementingType              : {[RuntimeType]} Microsoft.PowerShell.Commands.FileSystemProvider
		Module                        : 
		ModuleName                    : Microsoft.PowerShell.Core
		Name                          : FileSystem
		PSSnapIn                      : {[PSSnapInInfo]} Microsoft.PowerShell.Core
	Attributes                    : Archive, NotContentIndexed
		value__                       : 8224
	CreationTime                  : 12.06.2017 18:54:31
	CreationTimeUtc               : 12.06.2017 16:54:31
	Directory                     : C:\
		LinkType                      : 
		Mode                          : d--hs-
		Target                        : 
		Attributes                    : Hidden, System, Directory, NotContentIndexed
		CreationTime                  : {[DateTime]} 10/30/2015 07:28:30
		CreationTimeUtc               : {[DateTime]} 10/30/2015 06:28:30
		Exists                        : True
		Extension                     : 
		FullName                      : C:\
		LastAccessTime                : {[DateTime]} 04/30/2019 14:57:51
		LastAccessTimeUtc             : {[DateTime]} 04/30/2019 12:57:51
		LastWriteTime                 : {[DateTime]} 04/30/2019 14:57:51
		LastWriteTimeUtc              : {[DateTime]} 04/30/2019 12:57:51
		Name                          : C:\
		Parent                        : 
		Root                          : {[DirectoryInfo]} C:\
		BaseName                      : C:\
	DirectoryName                 : C:\
	Exists                        : True
	Extension                     : .ps1
	FullName                      : C:\StartHidden_OfficeBackgroundTaskHandlerRegistration.ps1
	IsReadOnly                    : False
	LastAccessTime                : 12.06.2017 18:54:31
	LastAccessTimeUtc             : 12.06.2017 16:54:31
	LastWriteTime                 : 12.06.2017 18:57:16
	LastWriteTimeUtc              : 12.06.2017 16:57:16
	Length                        : 136
	Name                          : StartHidden_OfficeBackgroundTaskHandlerRegistration.ps1
	BaseName                      : StartHidden_OfficeBackgroundTaskHandlerRegistration
	VersionInfo                   : File:             C:\StartHidden_OfficeBackgroundTaskHandlerRegistration.ps1
	                                InternalName:     
	                                OriginalFilename: 
	                                FileVersion:      
	                                FileDescription:  
	                                Product:          
	                                ProductVersion:   
	                                Debug:            False
	                                Patched:          False
	                                PreRelease:       False
	                                PrivateBuild:     False
	                                SpecialBuild:     False
	                                Language:         
	                                
		Comments                      : 
		CompanyName                   : 
		FileBuildPart                 : 0
		FileDescription               : 
		FileMajorPart                 : 0
		FileMinorPart                 : 0
		FileName                      : C:\StartHidden_OfficeBackgroundTaskHandlerRegistration.ps1
		FilePrivatePart               : 0
		FileVersion                   : 
		InternalName                  : 
		IsDebug                       : False
		IsPatched                     : False
		IsPreRelease                  : False
		IsPrivateBuild                : False
		IsSpecialBuild                : False
		Language                      : 
		LegalCopyright                : 
		LegalTrademarks               : 
		OriginalFilename              : 
		PrivateBuild                  : 
		ProductBuildPart              : 0
		ProductMajorPart              : 0
		ProductMinorPart              : 0
		ProductName                   : 
		ProductPrivatePart            : 0
		ProductVersion                : 
		SpecialBuild                  : 
		FileVersionRaw                : {[Version]} 0.0.0.0
		ProductVersionRaw             : {[Version]} 0.0.0.0

Allerdings ist hier der Zeilenumbruch zwischen den Main-Objekten nicht realisierbar gewesen.
D.h. die Objekte über die Pipeline werden ohne Zeilenumrüche direkt untereinander ausgeben.

An und für sich war seit der letzten Fassung der Pipeline-Input kein Problem mehr, was die Standard-Ausgabe angeht.

Allerdings hab ich ja den Parameter $ShowObjectPathId.
Dieser Parameter listet in der ersten Spalte der Ausgabe hochzählend eine Kombination aus numerischen und alpha-numerischen Zeichen auf, die abhängig davon sind, auf welchem Level sich die Verarbeitung befindet.

Beim Pipeline-Input war das anfangs schwierig abzufangen, da die Pipeline entweder einzelne Objekte oder aber Arrays von Objekten übergibt. (dafür muss man ja auch in der Advanced Function ein "ForEach" im "Process"-Bereich verwenden, um alles zu verarbeiten).
Hier hat mein Index einfach ohne Reset hochgezählt und dadurch kam beim letzen Pipe-Input eine initiale ObjectPathId von bereits XXX-Zeichen zustande.

Das sollte nun aber alles funktionieren.

Zudem wird nun ein Suffix für Array-Item-Properties bei Verwendung des $ShowObjectPathId"-Argument ausgegeben.
Das macht sich besonders bei XML-Dateien bemerkbar, da dort häufig mehrere Properties von Child-Elementen mit ein und dem selben Property-Namen unter dem gleichem Parent laufen.

Die ID baut sich demnach nun wie folgt zusammen:
  1. Parent-Object-Path-Id
    z. B. 000
  2. Item-Property vom aktuellen Objekt
    z. b. 3
  3. Array-Item-Index
    z. B. -5
Ergibt:
0003-5


Da Array-Items in meiner Funktion auf gleichem Object-Level laufen, ist die ID für jedes Array-Item-Property auch gleich.
Lediglich der neu hinzugefügte Suffix unterscheidet sie.

Als Beispiel nochmal ein Aufruf einer XML mit der von mir angehängten XML-Datei in Post #10
Dort macht sich der Parameter ShowObjectPathId besonders bemerkbar.
PowerShell:
[xml] $xml = Get-Content "C:\temp\donuts.xml" -Encoding UTF8 
$xml | Format-NestedObject -MaxDepth 5 -ShowObjectPathId -ShowObjectTypeForValues

Output:
Code:
[XmlDocument] #document
0    	item2s                        : System.Xml.XmlElement
00   		item2                         : [Object[]]
000-0			batters[0]                    : [XmlElement] System.Xml.XmlElement
0000 				batter                        : [Object[]]
00000-0					#text[0]                      : [String] Regular
00001-0					id[0]                         : [String] 1001
						------------------------------
00000-1					#text[1]                      : [String] Chocolate
00001-1					id[1]                         : [String] 1002
						------------------------------
00000-2					#text[2]                      : [String] Blueberry
00001-2					id[2]                         : [String] 1003
						------------------------------
00000-3					#text[3]                      : [String] Devil's Food
00001-3					id[3]                         : [String] 1003
001-0			id[0]                         : [String] 0001
002-0			name[0]                       : [String] Cake
003-0			ppu[0]                        : [String] 0.55
004-0			topping[0]                    : [Object[]]
0040-0				#text[0]                      : [String] None
0041-0				id[0]                         : [String] 5001
					------------------------------
0040-1				#text[1]                      : [String] Glazed
0041-1				id[1]                         : [String] 5002
					------------------------------
0040-2				#text[2]                      : [String] Sugar
0041-2				id[2]                         : [String] 5005
					------------------------------
0040-3				#text[3]                      : [String] Powdered Sugar
0041-3				id[3]                         : [String] 5007
					------------------------------
0040-4				#text[4]                      : [String] Chocolate with Sprinkles
0041-4				id[4]                         : [String] 5006
					------------------------------
0040-5				#text[5]                      : [String] Chocolate
0041-5				id[5]                         : [String] 5003
					------------------------------
0040-6				#text[6]                      : [String] Maple
0041-6				id[6]                         : [String] 5004
005-0			type[0]                       : [String] donut
				------------------------------
000-1			batters[1]                    : [XmlElement] System.Xml.XmlElement
0000 				batter                        : [XmlElement] System.Xml.XmlElement
00000					#text                         : [String] Regular
00001					id                            : [String] 1001
001-1			id[1]                         : [String] 0002
002-1			name[1]                       : [String] Raised
003-1			ppu[1]                        : [String] 0.55
004-1			topping[1]                    : [Object[]]
0040-0				#text[0]                      : [String] None
0041-0				id[0]                         : [String] 5001
					------------------------------
0040-1				#text[1]                      : [String] Glazed
0041-1				id[1]                         : [String] 5002
					------------------------------
0040-2				#text[2]                      : [String] Sugar
0041-2				id[2]                         : [String] 5005
					------------------------------
0040-3				#text[3]                      : [String] Chocolate
0041-3				id[3]                         : [String] 5003
					------------------------------
0040-4				#text[4]                      : [String] Maple
0041-4				id[4]                         : [String] 5004
005-1			type[1]                       : [String] donut
				------------------------------
000-2			batters[2]                    : [XmlElement] System.Xml.XmlElement
0000 				batter                        : [Object[]]
00000-0					#text[0]                      : [String] Regular
00001-0					id[0]                         : [String] 1001
						------------------------------
00000-1					#text[1]                      : [String] Chocolate
00001-1					id[1]                         : [String] 1002
001-2			id[2]                         : [String] 0003
002-2			name[2]                       : [String] Buttermilk
003-2			ppu[2]                        : [String] 0.55
004-2			type[2]                       : [String] donut
				------------------------------
000-3			batters[3]                    : [XmlElement] System.Xml.XmlElement
0000 				batter                        : [XmlElement] System.Xml.XmlElement
00000					#text                         : [String] Regular
00001					id                            : [String] 1001
001-3			fillings[3]                   : [XmlElement] System.Xml.XmlElement
0010 				filling                       : [Object[]]
00100-0					addcost[0]                    : [String] 0
00101-0					id[0]                         : [String] 7001
00102-0					name[0]                       : [String] None
						------------------------------
00100-1					addcost[1]                    : [String] 0.25
00101-1					id[1]                         : [String] 7002
00102-1					name[1]                       : [String] Custard
						------------------------------
00100-2					addcost[2]                    : [String] 0.25
00101-2					id[2]                         : [String] 7003
00102-2					name[2]                       : [String] Whipped Cream
002-3			id[3]                         : [String] 0004
003-3			name[3]                       : [String] Bar
004-3			ppu[3]                        : [String] 0.75
005-3			topping[3]                    : [Object[]]
0050-0				#text[0]                      : [String] Chocolate
0051-0				id[0]                         : [String] 5003
					------------------------------
0050-1				#text[1]                      : [String] Maple
0051-1				id[1]                         : [String] 5004
006-3			type[3]                       : [String] bar
				------------------------------
000-4			batters[4]                    : [XmlElement] System.Xml.XmlElement
0000 				batter                        : [XmlElement] System.Xml.XmlElement
00000					#text                         : [String] Regular
00001					id                            : [String] 1001
001-4			id[4]                         : [String] 0005
002-4			name[4]                       : [String] Twist
003-4			ppu[4]                        : [String] 0.65
004-4			topping[4]                    : [Object[]]
0040-0				#text[0]                      : [String] Glazed
0041-0				id[0]                         : [String] 5002
					------------------------------
0040-1				#text[1]                      : [String] Sugar
0041-1				id[1]                         : [String] 5005
005-4			type[4]                       : [String] twist
				------------------------------
000-5			batters[5]                    : [XmlElement] System.Xml.XmlElement
0000 				batter                        : [XmlElement] System.Xml.XmlElement
00000					#text                         : [String] Regular
00001					id                            : [String] 1001
001-5			fillings[5]                   : [XmlElement] System.Xml.XmlElement
0010 				filling                       : [Object[]]
00100-0					addcost[0]                    : [String] 0
00101-0					id[0]                         : [String] 7002
00102-0					name[0]                       : [String] Custard
						------------------------------
00100-1					addcost[1]                    : [String] 0
00101-1					id[1]                         : [String] 7003
00102-1					name[1]                       : [String] Whipped Cream
						------------------------------
00100-2					addcost[2]                    : [String] 0
00101-2					id[2]                         : [String] 7004
00102-2					name[2]                       : [String] Strawberry Jelly
						------------------------------
00100-3					addcost[3]                    : [String] 0
00101-3					id[3]                         : [String] 7005
00102-3					name[3]                       : [String] Rasberry Jelly
002-5			id[5]                         : [String] 0006
003-5			name[5]                       : [String] Filled
004-5			ppu[5]                        : [String] 0.75
005-5			topping[5]                    : [Object[]]
0050-0				#text[0]                      : [String] Glazed
0051-0				id[0]                         : [String] 5002
					------------------------------
0050-1				#text[1]                      : [String] Powdered Sugar
0051-1				id[1]                         : [String] 5007
					------------------------------
0050-2				#text[2]                      : [String] Chocolate
0051-2				id[2]                         : [String] 5003
					------------------------------
0050-3				#text[3]                      : [String] Maple
0051-3				id[3]                         : [String] 5004
006-5			type[5]                       : [String] filled
1    	xml                           : version="1.0" encoding="utf-8"


Nachtrag:
Generell lässt sich diese Funktion nun (sofern dauerhaft geladen) für jede Ausgabe von jeglichen Objekten nutzen, die einem nicht umfassend bekannt sind.


Als Beispiel mal ein Test von mir um selektierte CIM/WIM-Instanzen auszugeben, ausgelöst durch ein Out-GridView. ACHTUNG: Never-Ending-Loop Script! Bitte in der ISE ausführen

PowerShell:
CLS

$CIMClasses = Get-CimClass "Win32_*" | Sort CimClassName                        
Do { 
	
	$CIM = $CIMClasses.CimClassName | Sort 
	
	If ($lastCim) { 
		$CIM = $CIM.Where({ $_ -eq $lastCim} ,[System.Management.Automation.WhereOperatorSelectionMode]::SkipUntil) 
	} 
	$selectedCIM = $CIM | ogv -PassThru 
	
	CLS 
	"## $selectedCIM ##" 
	Format-NestedObject (get-ciminstance $selectedCIM) -MaxDepth 4 
	$lastCim= $selectedCIM 
	[gc]::collect() 
} Until (1 -gt 2)
Die Ausgabe im GridView in diesem Beispiel beinhaltet nur die WIM/CIM-Objekte nach dem bereits ausgewählten!
Die vorherigen werden übersprungen und können nicht mehr ausgewählt werden.
Um den Loop zu beenden einfach in der ISE auf STOP klicken.
In der normalen PowerShell-Konsole muss der Aufruf über den TaskManager beendet werden!

Das wird z. B. für "Win32_BIOS" ausgegeben:
Code:
## Win32_BIOS ##
[CimInstance] Win32_BIOS: F6 (Name = "F6", SoftwareElementID = "F6", SoftwareElementState = 3, TargetOperatingSystem = 0, Version = "ALASKA - 1072009")
	BiosCharacteristics           : [UInt16[]]
		[UInt16][0]                   : 7
		------------------------------
		[UInt16][1]                   : 11
		------------------------------
		[UInt16][2]                   : 12
		------------------------------
		[UInt16][3]                   : 15
		------------------------------
		[UInt16][4]                   : 16
		------------------------------
		[UInt16][5]                   : 17
		------------------------------
		[UInt16][6]                   : 19
		------------------------------
		[UInt16][7]                   : 23
		------------------------------
		[UInt16][8]                   : 24
		------------------------------
		[UInt16][9]                   : 25
		------------------------------
		[UInt16][10]                  : 26
		------------------------------
		[UInt16][11]                  : 27
		------------------------------
		[UInt16][12]                  : 28
		------------------------------
		[UInt16][13]                  : 29
		------------------------------
		[UInt16][14]                  : 32
		------------------------------
		[UInt16][15]                  : 33
		------------------------------
		[UInt16][16]                  : 40
		------------------------------
		[UInt16][17]                  : 42
		------------------------------
		[UInt16][18]                  : 43
	BIOSVersion                   : [String[]]
		[String][0]                   : ALASKA - 1072009
		------------------------------
		[String][1]                   : F6
		------------------------------
		[String][2]                   : American Megatrends - 4028D
	BuildNumber                   : 
	Caption                       : F6
	CodeSet                       : 
	CurrentLanguage               : en|US|iso8859-1
	Description                   : F6
	EmbeddedControllerMajorVersion: 255
	EmbeddedControllerMinorVersion: 255
	IdentificationCode            : 
	InstallableLanguages          : 13
	InstallDate                   : 
	LanguageEdition               : 
	ListOfLanguages               : [String[]]
		[String][0]                   : en|US|iso8859-1
		------------------------------
		[String][1]                   : fr|FR|iso8859-1
		------------------------------
		[String][2]                   : es|ES|iso8859-1
		------------------------------
		[String][3]                   : de|DE|iso8859-1
		------------------------------
		[String][4]                   : ru|RU|iso8859-5
		------------------------------
		[String][5]                   : ko|KR|unicode
		------------------------------
		[String][6]                   : it|IT|iso8859-1
		------------------------------
		[String][7]                   : pt|PT|iso8859-1
		------------------------------
		[String][8]                   : sv|SE|iso8859-1
		------------------------------
		[String][9]                   : ja|JP|unicode
		------------------------------
		[String][10]                  : zh|CS|unicode
		------------------------------
		[String][11]                  : zh|CT|unicode
		------------------------------
		[String][12]                  : pl|PL|iso8859-1
	Manufacturer                  : American Megatrends Inc.
	Name                          : F6
	OtherTargetOS                 : 
	PrimaryBIOS                   : True
	PSComputerName                : 
	ReleaseDate                   : 21.04.2015 02:00:00
	SerialNumber                  : To be filled by O.E.M.
	SMBIOSBIOSVersion             : F6
	SMBIOSMajorVersion            : 2
	SMBIOSMinorVersion            : 7
	SMBIOSPresent                 : True
	SoftwareElementID             : F6
	SoftwareElementState          : 3
	Status                        : OK
	SystemBiosMajorVersion        : 4
	SystemBiosMinorVersion        : 6
	TargetOperatingSystem         : 0
	Version                       : ALASKA - 1072009
 
Zuletzt bearbeitet:
Hab nun einen WorkAround für XML-Nodes mit dem reservierten Property-Name "Item" gefunden.
Wurde nun entsprechend in der Funktion angepasst:

PowerShell:
Function Get-Properties($in ,[switch] $Forced) { # list properties of object  
	If ($in -is [System.Xml.XmlNode]) { # A workaround for xml files in case the reserved property name "item" is used otherwise it will not be returned (only as "ParametrizedParameter" which is a default parameter for xml nodes)  
		$in.ChildNodes.LocalName 
	} Else { 
		If ($Forced) { 
			($in | Get-Member -MemberType Properties -Force -ErrorAction SilentlyContinue).Name | ? { $_ -notin 'pstypenames' } 
		} Else { 
			($in | Get-Member -MemberType Properties -ErrorAction SilentlyContinue).Name | ? { $_ -notin 'pstypenames' } 
		} 
	} 
}

Die Frage, die halt noch im Raum steht, ist: Wie umgehe ich das Problemm generell, da es ja bestimmt auch bei anderen Objekten auftreten kann?
 
Indem Du die Sache mit dem XML ignorierst und Dir zunutze machst, das -is nicht nur für den Typen, sondern auch für alle Superklassen $true zurückgibt.

Entsprechend ist nicht nur ... .Item -is [psparameterizedproperty], sondern auch -is [psmethodinfo] $true.

Dann fragst Du nach PSMethodInfo und wenn das $true liefert, dann muß da irgendwie eine Klammer hintendran. Außerdem erfährst Du mit der Eigenschaft .OverloadDefinitions, welche Signatur die Methode/die parametrisierte Eigenschaft erwartet: int oder string oder halt irgendwas anderes.

Aber da Du Methoden ja bereits übergehst, würd ich sagen wäre es der schlüssigere Weg, alles unterhalb eines Objekts, was sich aus PSMethodInfo ableitet, zu überspringen.
 
RalphS schrieb:
Indem Du die Sache mit dem XML ignorierst und Dir zunutze machst, das -is nicht nur für den Typen, sondern auch für alle Superklassen $true zurückgibt.

Entsprechend ist nicht nur ... .Item -is [psparameterizedproperty], sondern auch -is [psmethodinfo] $true.

Dann fragst Du nach PSMethodInfo und wenn das $true liefert, dann muß da irgendwie eine Klammer hintendran. Außerdem erfährst Du mit der Eigenschaft .OverloadDefinitions, welche Signatur die Methode/die parametrisierte Eigenschaft erwartet: int oder string oder halt irgendwas anderes.

Aber da Du Methoden ja bereits übergehst, würd ich sagen wäre es der schlüssigere Weg, alles unterhalb eines Objekts, was sich aus PSMethodInfo ableitet, zu überspringen.

Mein Problem ist ja, dass ich bei meinem Beispiel den Wert von "Item" zurückgeben will, ich jedoch nicht in der Lage bin es zu erkennen, da mir nur die Methode als ParametrizedParameter zurückgegeben wird.

Ich erkenne auch nicht, dass "Item" auch ohne jegliche Parameter ausgegeben werden kann oder anders gesagt, es eine eigenständige Eigenschaft des Objekts ist und nichts mit der Methode am Hut hat.

Selbst der direkte Aufruf der Sub-Objekte liefert ja schon Ergebnisse, die aussagen, dass hier etwas nicht im Lot ist:
PowerShell:
# 'item' durch 'item2' ersetzt (aus 'Items' wird auch 'Item2s')
$xml.item2s

item2                             
-----                             
{Cake, Raised, Buttermilk, Bar...}
PowerShell:
# ohne Ersetzung
$xml.items


Name            : items
LocalName       : items
NamespaceURI    : 
Prefix          : 
NodeType        : Element
ParentNode      : #document
OwnerDocument   : #document
IsEmpty         : False
Attributes      : {}
HasAttributes   : False
SchemaInfo      : System.Xml.XmlName
InnerXml        : <item id="0001" type="donut"><name>Cake</name><ppu>0.55</ppu><batters><batter id="1001">Regular</batter><batter id="1002">Chocolate</batter><batter 
                  id="1003">Blueberry</batter><batter id="1003">Devil's Food</batter></batters><topping id="5001">None</topping><topping id="5002">Glazed</topping><topping 
                  id="5005">Sugar</topping><topping id="5007">Powdered Sugar</topping><topping id="5006">Chocolate with Sprinkles</topping><topping 
                  id="5003">Chocolate</topping><topping id="5004">Maple</topping></item><item id="0002" type="donut"><name>Raised</name><ppu>0.55</ppu><batters><batter 
                  id="1001">Regular</batter></batters><topping id="5001">None</topping><topping id="5002">Glazed</topping><topping id="5005">Sugar</topping><topping 
                  id="5003">Chocolate</topping><topping id="5004">Maple</topping></item><item id="0003" type="donut"><name>Buttermilk</name><ppu>0.55</ppu><batters><batter 
                  id="1001">Regular</batter><batter id="1002">Chocolate</batter></batters></item><item id="0004" type="bar"><name>Bar</name><ppu>0.75</ppu><batters><batter 
                  id="1001">Regular</batter></batters><topping id="5003">Chocolate</topping><topping id="5004">Maple</topping><fillings><filling 
                  id="7001"><name>None</name><addcost>0</addcost></filling><filling id="7002"><name>Custard</name><addcost>0.25</addcost></filling><filling id="7003"><name>Whipped 
                  Cream</name><addcost>0.25</addcost></filling></fillings></item><item id="0005" type="twist"><name>Twist</name><ppu>0.65</ppu><batters><batter 
                  id="1001">Regular</batter></batters><topping id="5002">Glazed</topping><topping id="5005">Sugar</topping></item><item id="0006" 
                  type="filled"><name>Filled</name><ppu>0.75</ppu><batters><batter id="1001">Regular</batter></batters><topping id="5002">Glazed</topping><topping id="5007">Powdered 
                  Sugar</topping><topping id="5003">Chocolate</topping><topping id="5004">Maple</topping><fillings><filling 
                  id="7002"><name>Custard</name><addcost>0</addcost></filling><filling id="7003"><name>Whipped Cream</name><addcost>0</addcost></filling><filling 
                  id="7004"><name>Strawberry Jelly</name><addcost>0</addcost></filling><filling id="7005"><name>Rasberry Jelly</name><addcost>0</addcost></filling></fillings></item>
InnerText       : Cake0.55RegularChocolateBlueberryDevil's FoodNoneGlazedSugarPowdered SugarChocolate with 
                  SprinklesChocolateMapleRaised0.55RegularNoneGlazedSugarChocolateMapleButtermilk0.55RegularChocolateBar0.75RegularChocolateMapleNone0Custard0.25Whipped 
                  Cream0.25Twist0.65RegularGlazedSugarFilled0.75RegularGlazedPowdered SugarChocolateMapleCustard0Whipped Cream0Strawberry Jelly0Rasberry Jelly0
NextSibling     : 
PreviousSibling : xml
Value           : 
ChildNodes      : {Cake, Raised, Buttermilk, Bar...}
FirstChild      : item
LastChild       : item
HasChildNodes   : True
IsReadOnly      : False
OuterXml        : <items><item id="0001" type="donut"><name>Cake</name><ppu>0.55</ppu><batters><batter id="1001">Regular</batter><batter id="1002">Chocolate</batter><batter 
                  id="1003">Blueberry</batter><batter id="1003">Devil's Food</batter></batters><topping id="5001">None</topping><topping id="5002">Glazed</topping><topping 
                  id="5005">Sugar</topping><topping id="5007">Powdered Sugar</topping><topping id="5006">Chocolate with Sprinkles</topping><topping 
                  id="5003">Chocolate</topping><topping id="5004">Maple</topping></item><item id="0002" type="donut"><name>Raised</name><ppu>0.55</ppu><batters><batter 
                  id="1001">Regular</batter></batters><topping id="5001">None</topping><topping id="5002">Glazed</topping><topping id="5005">Sugar</topping><topping 
                  id="5003">Chocolate</topping><topping id="5004">Maple</topping></item><item id="0003" type="donut"><name>Buttermilk</name><ppu>0.55</ppu><batters><batter 
                  id="1001">Regular</batter><batter id="1002">Chocolate</batter></batters></item><item id="0004" type="bar"><name>Bar</name><ppu>0.75</ppu><batters><batter 
                  id="1001">Regular</batter></batters><topping id="5003">Chocolate</topping><topping id="5004">Maple</topping><fillings><filling 
                  id="7001"><name>None</name><addcost>0</addcost></filling><filling id="7002"><name>Custard</name><addcost>0.25</addcost></filling><filling id="7003"><name>Whipped 
                  Cream</name><addcost>0.25</addcost></filling></fillings></item><item id="0005" type="twist"><name>Twist</name><ppu>0.65</ppu><batters><batter 
                  id="1001">Regular</batter></batters><topping id="5002">Glazed</topping><topping id="5005">Sugar</topping></item><item id="0006" 
                  type="filled"><name>Filled</name><ppu>0.75</ppu><batters><batter id="1001">Regular</batter></batters><topping id="5002">Glazed</topping><topping id="5007">Powdered 
                  Sugar</topping><topping id="5003">Chocolate</topping><topping id="5004">Maple</topping><fillings><filling 
                  id="7002"><name>Custard</name><addcost>0</addcost></filling><filling id="7003"><name>Whipped Cream</name><addcost>0</addcost></filling><filling 
                  id="7004"><name>Strawberry Jelly</name><addcost>0</addcost></filling><filling id="7005"><name>Rasberry 
                  Jelly</name><addcost>0</addcost></filling></fillings></item></items>
BaseURI         : 
PreviousText    :
 
.Item als ParemeterizedProperty hat aber keinen Wert. Das ist ein Iterator über eine Liste.

Bei XML und PS kommt erschwerend dazu, daß Tags zu Properties des XML Objekts autokonvertiert werden. Wenn Du in XML ein Tag ToString anlegst, kriegst Du entsprechend ebenfalls ein Problem.
 
Zurück
Oben