DPXone
Lieutenant
- Registriert
- Mai 2009
- Beiträge
- 554
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:
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':
Ergebnis ohne Format-NestedList (Standard in PowerShell):
Ergebnis [1] mit Format-NestedList und $Depth = 3
Ergebnis [2] mit Format-NestedList, $DisplayObjectPathId, $DisplayFullTypeName and $Depth = 3 (jede Zeile erhält einen aufbauenden Index am Anfang jeder Zeile)
Ein weiteres Beispiel für die Ausgabe von Diensten, die mit C* beginnen (Ergebnis auf 2 Einträge gekürzt)
Ergebnis mit Format-NestedList
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
Ergebnis mit Format-NestedList
Bei Fragen, Anregungen, Problemen oder Verbesserungsvorschläge einfach Posten
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:
- 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.
- Objekte mit mehreren Properties oder weiteren verschachtelten Objekten werden mit eckigen Klammern visuell dargestellt (z. B. [System.Security.SecurityCriticalAttribute()] )
- 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.
- 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%]
- 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
- 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:
<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)?:
Wie binde ich die Funktion in jede PowerShell ISE Session ein?
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'
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)