none
-ExpandProperty RRS feed

  • Frage

  • moin,

    führt man nachfolgende Befehl aus

    Get-ChildItem -Path c:\temp -filter *.jpg -Recurse | fl

    erhält man VersionsInfo, File

    Name           : k-20160102_124404.jpg
    ...

    Target         : {}
    VersionInfo    : File:             C:\temp\verkleinert1025\k-20160102_124404.jpg
                     InternalName:    
                     OriginalFilename:
                     FileVersion:     
                     FileDescription: 

    jetzt wäre es doch naheliegend, dass man das Property/Objekt entweder mit VersionInfo.File oder InternatName bei ExpandProperty zum erweitern des Objektes VersionsInfo angeben könnte?

    im meinem Beispielbuch steht

    Get-ChildItem -Path c:\temp -filter *.jpg -Recurse | select -ExpandProperty fullname


    wie soll denn da einer drauf kommen. Selbst in der Hilfe findet man den Parameter "Fullname" nicht


    Chris

    hier passt es zb. beides CommandLine

    get-history |select -ExpandProperty Commandline
    Get-History | fl

    • Bearbeitet -- Chris -- Donnerstag, 22. Dezember 2016 10:37
    Donnerstag, 22. Dezember 2016 10:33

Antworten

  • Hi Chris,

    es hängt von den Commandlets ab welche Eigenschaften die Objekte haben und welche Angezeigt werden.

    Die Eigenschaften kann du mit 

    get-member

    herausfinden.

    Schau mal:

    PS C:\Windows\system32> Get-ChildItem -Path c:\temp -filter *.jpg -Recurse |get-member
    
    
       TypeName: System.IO.FileInfo
    
    Name                      MemberType     Definition                                                                                                                                             
    ----                      ----------     ----------                                                                                                                                             
    LinkType                  CodeProperty   System.String LinkType{get=GetLinkType;}                                                                                                               
    Mode                      CodeProperty   System.String Mode{get=Mode;}                                                                                                                          
    Target                    CodeProperty   System.Collections.Generic.IEnumerable`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] Target{get=Ge...
    AppendText                Method         System.IO.StreamWriter AppendText()                                                                                                                    
    CopyTo                    Method         System.IO.FileInfo CopyTo(string destFileName), System.IO.FileInfo CopyTo(string destFileName, bool overwrite)                                         
    Create                    Method         System.IO.FileStream Create()                                                                                                                          
    CreateObjRef              Method         System.Runtime.Remoting.ObjRef CreateObjRef(type requestedType)                                                                                        
    CreateText                Method         System.IO.StreamWriter CreateText()                                                                                                                    
    Decrypt                   Method         void Decrypt()                                                                                                                                         
    Delete                    Method         void Delete()                                                                                                                                          
    Encrypt                   Method         void Encrypt()                                                                                                                                         
    Equals                    Method         bool Equals(System.Object obj)                                                                                                                         
    GetAccessControl          Method         System.Security.AccessControl.FileSecurity GetAccessControl(), System.Security.AccessControl.FileSecurity GetAccessControl(System.Security.AccessCon...
    GetHashCode               Method         int GetHashCode()                                                                                                                                      
    GetLifetimeService        Method         System.Object GetLifetimeService()                                                                                                                     
    GetObjectData             Method         void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context), void ISerializable.G...
    GetType                   Method         type GetType()                                                                                                                                         
    InitializeLifetimeService Method         System.Object InitializeLifetimeService()                                                                                                              
    MoveTo                    Method         void MoveTo(string destFileName)                                                                                                                       
    Open                      Method         System.IO.FileStream Open(System.IO.FileMode mode), System.IO.FileStream Open(System.IO.FileMode mode, System.IO.FileAccess access), System.IO.FileS...
    OpenRead                  Method         System.IO.FileStream OpenRead()                                                                                                                        
    OpenText                  Method         System.IO.StreamReader OpenText()                                                                                                                      
    OpenWrite                 Method         System.IO.FileStream OpenWrite()                                                                                                                       
    Refresh                   Method         void Refresh()                                                                                                                                         
    Replace                   Method         System.IO.FileInfo Replace(string destinationFileName, string destinationBackupFileName), System.IO.FileInfo Replace(string destinationFileName, str...
    SetAccessControl          Method         void SetAccessControl(System.Security.AccessControl.FileSecurity fileSecurity)                                                                         
    ToString                  Method         string ToString()                                                                                                                                      
    PSChildName               NoteProperty   string PSChildName=20160316_164653.jpg                                                                                                                 
    PSDrive                   NoteProperty   PSDriveInfo PSDrive=C                                                                                                                                  
    PSIsContainer             NoteProperty   bool PSIsContainer=False                                                                                                                               
    PSParentPath              NoteProperty   string PSParentPath=Microsoft.PowerShell.Core\FileSystem::C:\temp\_backup_s2tpaj\s2tpaj\Desktop\Bernburg                                               
    PSPath                    NoteProperty   string PSPath=Microsoft.PowerShell.Core\FileSystem::C:\temp\_backup_s2tpaj\s2tpaj\Desktop\Bernburg\20160316_164653.jpg                                 
    PSProvider                NoteProperty   ProviderInfo PSProvider=Microsoft.PowerShell.Core\FileSystem                                                                                           
    Attributes                Property       System.IO.FileAttributes Attributes {get;set;}                                                                                                         
    CreationTime              Property       datetime CreationTime {get;set;}                                                                                                                       
    CreationTimeUtc           Property       datetime CreationTimeUtc {get;set;}                                                                                                                    
    Directory                 Property       System.IO.DirectoryInfo Directory {get;}                                                                                                               
    DirectoryName             Property       string DirectoryName {get;}                                                                                                                            
    Exists                    Property       bool Exists {get;}                                                                                                                                     
    Extension                 Property       string Extension {get;}                                                                                                                                
    FullName                  Property       string FullName {get;}                                                                                                                                 
    IsReadOnly                Property       bool IsReadOnly {get;set;}                                                                                                                             
    LastAccessTime            Property       datetime LastAccessTime {get;set;}                                                                                                                     
    LastAccessTimeUtc         Property       datetime LastAccessTimeUtc {get;set;}                                                                                                                  
    LastWriteTime             Property       datetime LastWriteTime {get;set;}                                                                                                                      
    LastWriteTimeUtc          Property       datetime LastWriteTimeUtc {get;set;}                                                                                                                   
    Length                    Property       long Length {get;}                                                                                                                                     
    Name                      Property       string Name {get;}                                                                                                                                     
    BaseName                  ScriptProperty System.Object BaseName {get=if ($this.Extension.Length -gt 0){$this.Name.Remove($this.Name.Length - $this.Extension.Length)}else{$this.Name};}         
    VersionInfo               ScriptProperty System.Object VersionInfo {get=[System.Diagnostics.FileVersionInfo]::GetVersionInfo($this.FullName);}      

    Hier findest du u.a. die Property die hier gewählt werden können.Dazu kommen noch AliasPropery etc.

    Bei get-history ist die Auswahl dann schon kleiner

    PS C:\Windows\system32> get-history|gm
    
    
       TypeName: Microsoft.PowerShell.Commands.HistoryInfo
    
    Name               MemberType Definition                                                                 
    ----               ---------- ----------                                                                 
    Clone              Method     Microsoft.PowerShell.Commands.HistoryInfo Clone()                          
    Equals             Method     bool Equals(System.Object obj)                                             
    GetHashCode        Method     int GetHashCode()                                                          
    GetType            Method     type GetType()                                                             
    ToString           Method     string ToString()                                                          
    CommandLine        Property   string CommandLine {get;}                                                  
    EndExecutionTime   Property   datetime EndExecutionTime {get;}                                           
    ExecutionStatus    Property   System.Management.Automation.Runspaces.PipelineState ExecutionStatus {get;}
    Id                 Property   long Id {get;}                                                             
    StartExecutionTime Property   datetime StartExecutionTime {get;}  


    Bis dann, Toni! Wenn Dir meine Antwort hilft dann markiere sie bitte als Antwort! Vielen Dank!



    • Bearbeitet tonibert Donnerstag, 22. Dezember 2016 11:02
    • Als Antwort markiert -- Chris -- Donnerstag, 22. Dezember 2016 11:57
    Donnerstag, 22. Dezember 2016 11:00
  • Hallo,

    du solltest dich etwas intensiver mit den Grundlagen befassen, dann weißt du sowas auch. :-)

    Jedes Element in PowerShell ist ein Objekt. Mit Get-Member kannst du für jedes Objekt alle Eigenschaften und Methoden abrufen, die dir dieses Objekt bietet. Aber nicht nur das. Wenn du

    Get-Childitem C:\ | Get-Member

    aufrufst, dann steht ganz oben in der Ausgabe der Objekt-Typ. Get-Childitem liefert dir Elemente vom Typ "System.IO.DirectoryInfo" und "System.IO.FileInfo". Beides kannst du im Internet suchen.

    Tust du das, erhältst du für FileInfo diese Seite:

    https://msdn.microsoft.com/de-de/library/system.io.fileinfo%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

    Dort stehen ebenfalls alle Eigenschaften und alle Methoden des Objekts. Hier aber auch mit einem Beschreibungstext.

    Und noch ein Tipp: Vergiss Format-List. Das braucht kein Mensch. Du kannst die Variable direkt abrufen, dann bekommst du auch eine Liste.

    • Als Antwort markiert -- Chris -- Donnerstag, 22. Dezember 2016 12:05
    • Bearbeitet hpotsirhc Donnerstag, 22. Dezember 2016 12:06
    Donnerstag, 22. Dezember 2016 12:03
  • Hallo Chris,

    also nur noch einmal zur Verdeutlichung, FULLNAME ist kein Parameter sondern eine Eigenschaft(Porperty) z.B.: des Objektes System.IO.FileInfo, du bezeichnest FULLNAME in deinem Post als Parameter.

    Wenn Du hinter | fl noch einen Stern gesetzt hättest wäre es vielleicht klarer geworden.

    Get-ChildItem -Path c:\temp -filter *.jpg -Recurse | fl *

    Und scheinbar ist dir der Fullname wichtig, den bekommst du auch so 

    (Get-ChildItem -Path c:\temp -filter *.jpg -Recurse).FullName
    # oder etwas umständlicher aus einem Objekt im Objekt
    (Get-ChildItem -Path c:\temp -filter *.jpg -Recurse).VersionInfo.FileName
    Beste Grüße
    brima

    • Als Antwort markiert -- Chris -- Freitag, 23. Dezember 2016 06:57
    Donnerstag, 22. Dezember 2016 20:27
  • Servus Chris,

    evtl. ist dir der "select"-Befehl nicht bekannt?
    Du kannst eigentlich immer auf die jeweiligen "Properties" zugreifen, teilweise musst du diese nur auch in die Pipe bzw. die Ausgabe "holen".

    Wenn du folgenden Befehl eingibst, hast Du nur die vordefinierten Eigenschaften als Ausgabe:

    Get-ChildItem -Path T:\ -filter *.txt -Recurse | select -First 1

    Das wären Mode, LastWriteTime, Length und Name.

    Benötigst Du den sog. Fullname, musst du diese Eigenschaft auch mit in die Pipe bzw. die Ausgabe nehmen, ganz einfach, indem du es selektierst:

    Get-ChildItem -Path T:\ -filter *.txt -Recurse | select Fullname -First 1

    Als Ausgabe erhälst Du nun ein sog. PSCustomObject. Das heißt soviel wie, dass dir der Propertyname als Feldname über dem eigentlichen Wert in der Ausgabe steht. Woher Du weißt, welche Eigenschaften es gibt, haben dir meine Vorredner bereits erzählt. Alternativ kannst du auch "select *" benutzen. Benötigst Du nur den Wert einer Eigenschaft, musst du "-expandproperty" benutzen.

    (Get-ChildItem -Path T:\ -filter *.txt -Recurse | select -ExpandProperty Fullname -First 1)

    Die Ausgabe enthält nun einzig den Wert der Eigenschaft als String.

    Mfg, Jannik D.

    • Als Antwort markiert -- Chris -- Freitag, 23. Dezember 2016 09:33
    Freitag, 23. Dezember 2016 08:19
  • Die PowerShell ist ein mächtiges Werkzeug. Informationen über viele Objekte erhält man z.B. mit

    Befehl | Get-Member

    In diesem Fall also

    Get-ChildItem|Get-Member

    Es erscheint eine Tabelle mit den Spalten Name, MemberType (also z.B. CodeProperty, Method, NoteProperty, ScriptProperty) und Definition.

    Hier ist auch

    FullName                  Property       string FullName {get;}

    gelistet.

    • Als Antwort markiert -- Chris -- Freitag, 23. Dezember 2016 09:33
    Freitag, 23. Dezember 2016 08:32

Alle Antworten

  • Hi Chris,

    es hängt von den Commandlets ab welche Eigenschaften die Objekte haben und welche Angezeigt werden.

    Die Eigenschaften kann du mit 

    get-member

    herausfinden.

    Schau mal:

    PS C:\Windows\system32> Get-ChildItem -Path c:\temp -filter *.jpg -Recurse |get-member
    
    
       TypeName: System.IO.FileInfo
    
    Name                      MemberType     Definition                                                                                                                                             
    ----                      ----------     ----------                                                                                                                                             
    LinkType                  CodeProperty   System.String LinkType{get=GetLinkType;}                                                                                                               
    Mode                      CodeProperty   System.String Mode{get=Mode;}                                                                                                                          
    Target                    CodeProperty   System.Collections.Generic.IEnumerable`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] Target{get=Ge...
    AppendText                Method         System.IO.StreamWriter AppendText()                                                                                                                    
    CopyTo                    Method         System.IO.FileInfo CopyTo(string destFileName), System.IO.FileInfo CopyTo(string destFileName, bool overwrite)                                         
    Create                    Method         System.IO.FileStream Create()                                                                                                                          
    CreateObjRef              Method         System.Runtime.Remoting.ObjRef CreateObjRef(type requestedType)                                                                                        
    CreateText                Method         System.IO.StreamWriter CreateText()                                                                                                                    
    Decrypt                   Method         void Decrypt()                                                                                                                                         
    Delete                    Method         void Delete()                                                                                                                                          
    Encrypt                   Method         void Encrypt()                                                                                                                                         
    Equals                    Method         bool Equals(System.Object obj)                                                                                                                         
    GetAccessControl          Method         System.Security.AccessControl.FileSecurity GetAccessControl(), System.Security.AccessControl.FileSecurity GetAccessControl(System.Security.AccessCon...
    GetHashCode               Method         int GetHashCode()                                                                                                                                      
    GetLifetimeService        Method         System.Object GetLifetimeService()                                                                                                                     
    GetObjectData             Method         void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context), void ISerializable.G...
    GetType                   Method         type GetType()                                                                                                                                         
    InitializeLifetimeService Method         System.Object InitializeLifetimeService()                                                                                                              
    MoveTo                    Method         void MoveTo(string destFileName)                                                                                                                       
    Open                      Method         System.IO.FileStream Open(System.IO.FileMode mode), System.IO.FileStream Open(System.IO.FileMode mode, System.IO.FileAccess access), System.IO.FileS...
    OpenRead                  Method         System.IO.FileStream OpenRead()                                                                                                                        
    OpenText                  Method         System.IO.StreamReader OpenText()                                                                                                                      
    OpenWrite                 Method         System.IO.FileStream OpenWrite()                                                                                                                       
    Refresh                   Method         void Refresh()                                                                                                                                         
    Replace                   Method         System.IO.FileInfo Replace(string destinationFileName, string destinationBackupFileName), System.IO.FileInfo Replace(string destinationFileName, str...
    SetAccessControl          Method         void SetAccessControl(System.Security.AccessControl.FileSecurity fileSecurity)                                                                         
    ToString                  Method         string ToString()                                                                                                                                      
    PSChildName               NoteProperty   string PSChildName=20160316_164653.jpg                                                                                                                 
    PSDrive                   NoteProperty   PSDriveInfo PSDrive=C                                                                                                                                  
    PSIsContainer             NoteProperty   bool PSIsContainer=False                                                                                                                               
    PSParentPath              NoteProperty   string PSParentPath=Microsoft.PowerShell.Core\FileSystem::C:\temp\_backup_s2tpaj\s2tpaj\Desktop\Bernburg                                               
    PSPath                    NoteProperty   string PSPath=Microsoft.PowerShell.Core\FileSystem::C:\temp\_backup_s2tpaj\s2tpaj\Desktop\Bernburg\20160316_164653.jpg                                 
    PSProvider                NoteProperty   ProviderInfo PSProvider=Microsoft.PowerShell.Core\FileSystem                                                                                           
    Attributes                Property       System.IO.FileAttributes Attributes {get;set;}                                                                                                         
    CreationTime              Property       datetime CreationTime {get;set;}                                                                                                                       
    CreationTimeUtc           Property       datetime CreationTimeUtc {get;set;}                                                                                                                    
    Directory                 Property       System.IO.DirectoryInfo Directory {get;}                                                                                                               
    DirectoryName             Property       string DirectoryName {get;}                                                                                                                            
    Exists                    Property       bool Exists {get;}                                                                                                                                     
    Extension                 Property       string Extension {get;}                                                                                                                                
    FullName                  Property       string FullName {get;}                                                                                                                                 
    IsReadOnly                Property       bool IsReadOnly {get;set;}                                                                                                                             
    LastAccessTime            Property       datetime LastAccessTime {get;set;}                                                                                                                     
    LastAccessTimeUtc         Property       datetime LastAccessTimeUtc {get;set;}                                                                                                                  
    LastWriteTime             Property       datetime LastWriteTime {get;set;}                                                                                                                      
    LastWriteTimeUtc          Property       datetime LastWriteTimeUtc {get;set;}                                                                                                                   
    Length                    Property       long Length {get;}                                                                                                                                     
    Name                      Property       string Name {get;}                                                                                                                                     
    BaseName                  ScriptProperty System.Object BaseName {get=if ($this.Extension.Length -gt 0){$this.Name.Remove($this.Name.Length - $this.Extension.Length)}else{$this.Name};}         
    VersionInfo               ScriptProperty System.Object VersionInfo {get=[System.Diagnostics.FileVersionInfo]::GetVersionInfo($this.FullName);}      

    Hier findest du u.a. die Property die hier gewählt werden können.Dazu kommen noch AliasPropery etc.

    Bei get-history ist die Auswahl dann schon kleiner

    PS C:\Windows\system32> get-history|gm
    
    
       TypeName: Microsoft.PowerShell.Commands.HistoryInfo
    
    Name               MemberType Definition                                                                 
    ----               ---------- ----------                                                                 
    Clone              Method     Microsoft.PowerShell.Commands.HistoryInfo Clone()                          
    Equals             Method     bool Equals(System.Object obj)                                             
    GetHashCode        Method     int GetHashCode()                                                          
    GetType            Method     type GetType()                                                             
    ToString           Method     string ToString()                                                          
    CommandLine        Property   string CommandLine {get;}                                                  
    EndExecutionTime   Property   datetime EndExecutionTime {get;}                                           
    ExecutionStatus    Property   System.Management.Automation.Runspaces.PipelineState ExecutionStatus {get;}
    Id                 Property   long Id {get;}                                                             
    StartExecutionTime Property   datetime StartExecutionTime {get;}  


    Bis dann, Toni! Wenn Dir meine Antwort hilft dann markiere sie bitte als Antwort! Vielen Dank!



    • Bearbeitet tonibert Donnerstag, 22. Dezember 2016 11:02
    • Als Antwort markiert -- Chris -- Donnerstag, 22. Dezember 2016 11:57
    Donnerstag, 22. Dezember 2016 11:00
  • danke get-member bei -expandproperty war neu für mich

    FullName                  Property       string FullName {get;}                                                                                                                                 

    hätte ich trotzdem nicht herausgelesen, das hier der gesamte Dateiname gemeint ist :-) Sehr verwirrend, da man sich ja mit | format-list zwar die Properties anzeigen lassen kann aber nicht darauf verlassen kann.


    Chris


    • Bearbeitet -- Chris -- Donnerstag, 22. Dezember 2016 11:57
    Donnerstag, 22. Dezember 2016 11:07
  • Hallo,

    du solltest dich etwas intensiver mit den Grundlagen befassen, dann weißt du sowas auch. :-)

    Jedes Element in PowerShell ist ein Objekt. Mit Get-Member kannst du für jedes Objekt alle Eigenschaften und Methoden abrufen, die dir dieses Objekt bietet. Aber nicht nur das. Wenn du

    Get-Childitem C:\ | Get-Member

    aufrufst, dann steht ganz oben in der Ausgabe der Objekt-Typ. Get-Childitem liefert dir Elemente vom Typ "System.IO.DirectoryInfo" und "System.IO.FileInfo". Beides kannst du im Internet suchen.

    Tust du das, erhältst du für FileInfo diese Seite:

    https://msdn.microsoft.com/de-de/library/system.io.fileinfo%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

    Dort stehen ebenfalls alle Eigenschaften und alle Methoden des Objekts. Hier aber auch mit einem Beschreibungstext.

    Und noch ein Tipp: Vergiss Format-List. Das braucht kein Mensch. Du kannst die Variable direkt abrufen, dann bekommst du auch eine Liste.

    • Als Antwort markiert -- Chris -- Donnerstag, 22. Dezember 2016 12:05
    • Bearbeitet hpotsirhc Donnerstag, 22. Dezember 2016 12:06
    Donnerstag, 22. Dezember 2016 12:03
  • Und noch ein Tipp: Vergiss Format-List. Das braucht kein Mensch. Du kannst die Variable direkt abrufen, dann bekommst du auch eine Liste.

    Hmm...nein :-)

    Wenn die Variable eine Collection enthält, bekommst Du eine Tabelle. Und bei vielen Objekten sind auch die Paar Properties markiert, die bei fl standardmäßig angezeigt werden, und das sind nicht alle...

    Und wenn man bei Exchange z.B. die Eigenschaften von Virtual Directories über mehrere CAS-Server hinweg ausgeben möchte, ist fl besser geeignet als ft, denn so sieht man die Werte auch dann komplett, wenn sie länger sind als das PS-Fenster breit.


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> http://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com

    Donnerstag, 22. Dezember 2016 15:34
  • Hallo Chris,

    also nur noch einmal zur Verdeutlichung, FULLNAME ist kein Parameter sondern eine Eigenschaft(Porperty) z.B.: des Objektes System.IO.FileInfo, du bezeichnest FULLNAME in deinem Post als Parameter.

    Wenn Du hinter | fl noch einen Stern gesetzt hättest wäre es vielleicht klarer geworden.

    Get-ChildItem -Path c:\temp -filter *.jpg -Recurse | fl *

    Und scheinbar ist dir der Fullname wichtig, den bekommst du auch so 

    (Get-ChildItem -Path c:\temp -filter *.jpg -Recurse).FullName
    # oder etwas umständlicher aus einem Objekt im Objekt
    (Get-ChildItem -Path c:\temp -filter *.jpg -Recurse).VersionInfo.FileName
    Beste Grüße
    brima

    • Als Antwort markiert -- Chris -- Freitag, 23. Dezember 2016 06:57
    Donnerstag, 22. Dezember 2016 20:27
  • moin brima,

    danke für die INFO. der zweite Tipp ist auch interessante. Sauber wäre es für mich oder Newbee's wenn die Properties so angesprochen werden könnten wie sie heißen. Nein es ging mir nicht um den Dateinamen, mir ist lediglich beim Powershell lernen aufgefallen, dass man leider!!! nicht immer automatisch den Propertienamen verwerden kann. Dein zweites Beispiel kommt der Lösung schon näher.

    (Get-ChildItem -Path c:\temp -filter *.jpg -Recurse).VersionInfo.FileName

    (Get-ChildItem -Path c:\temp -filter *.jpg -Recurse).VersionInfo.File    => wäre logischer

    oder

    (Get-ChildItem -Path c:\temp -filter *.jpg -Recurse).VersionInfo.Patched 

    aber mit dem muss man sich einfach abfinden.


    Chris

    Freitag, 23. Dezember 2016 06:51
  • Servus Chris,

    evtl. ist dir der "select"-Befehl nicht bekannt?
    Du kannst eigentlich immer auf die jeweiligen "Properties" zugreifen, teilweise musst du diese nur auch in die Pipe bzw. die Ausgabe "holen".

    Wenn du folgenden Befehl eingibst, hast Du nur die vordefinierten Eigenschaften als Ausgabe:

    Get-ChildItem -Path T:\ -filter *.txt -Recurse | select -First 1

    Das wären Mode, LastWriteTime, Length und Name.

    Benötigst Du den sog. Fullname, musst du diese Eigenschaft auch mit in die Pipe bzw. die Ausgabe nehmen, ganz einfach, indem du es selektierst:

    Get-ChildItem -Path T:\ -filter *.txt -Recurse | select Fullname -First 1

    Als Ausgabe erhälst Du nun ein sog. PSCustomObject. Das heißt soviel wie, dass dir der Propertyname als Feldname über dem eigentlichen Wert in der Ausgabe steht. Woher Du weißt, welche Eigenschaften es gibt, haben dir meine Vorredner bereits erzählt. Alternativ kannst du auch "select *" benutzen. Benötigst Du nur den Wert einer Eigenschaft, musst du "-expandproperty" benutzen.

    (Get-ChildItem -Path T:\ -filter *.txt -Recurse | select -ExpandProperty Fullname -First 1)

    Die Ausgabe enthält nun einzig den Wert der Eigenschaft als String.

    Mfg, Jannik D.

    • Als Antwort markiert -- Chris -- Freitag, 23. Dezember 2016 09:33
    Freitag, 23. Dezember 2016 08:19
  • Hi Jannik,

    doch, doch. Select kenne ich.

    nein, es ging in der Diskussion lediglich um die Property/Feldbezeichnungen. Dies liegt in der Willkür des Cmdlet Entwicklers. Und da gibt es brave und nicht so brave.

    zb. am letzten Screenshot sieht man

    VersionInfo  File:

    und wie du richtig im Code schreibt nimmt man "Fullname"

    oder

    VersionInfo   OriginalFilename  (geht auch nicht). Darüber wollte ich diskutieren.

    wie gesagt: Dies liegt im Gutdünken des Cmdlet Entwicklers


    Chris


    • Bearbeitet -- Chris -- Freitag, 23. Dezember 2016 08:34
    Freitag, 23. Dezember 2016 08:26
  • Die PowerShell ist ein mächtiges Werkzeug. Informationen über viele Objekte erhält man z.B. mit

    Befehl | Get-Member

    In diesem Fall also

    Get-ChildItem|Get-Member

    Es erscheint eine Tabelle mit den Spalten Name, MemberType (also z.B. CodeProperty, Method, NoteProperty, ScriptProperty) und Definition.

    Hier ist auch

    FullName                  Property       string FullName {get;}

    gelistet.

    • Als Antwort markiert -- Chris -- Freitag, 23. Dezember 2016 09:33
    Freitag, 23. Dezember 2016 08:32
  • ja ich weiß, wie die Vorredner schon angemerkt haben.

    aber du wirst mir recht geben, schön wäre wenn es in der Hilfe detaillierter stehen würde. Das würde Zeit beim Hilfestudieren bringen. Noch besser wäre es wenn der Cmdlet Entwickler die gleichen Namen verwenden würde. :-)

    Hier ist auch
    
    FullName                  Property       string FullName {get;}
    

    FullName     Property     string Fullname {get;} ein (Alias) von VersionInfo File

    aber mit den oben genannten Tipps und Tipp von hpotsirhe

    Tust du das, erhältst du für FileInfo diese Seite:

    https://msdn.microsoft.com/de-de/library/system.io.fileinfo%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

    kann man ganz gut leben.

    Thanks all


    Chris

    Freitag, 23. Dezember 2016 09:32
  • Hallo Chris,

    nur, um das auch nochmal zu sagen: Es ist nicht der Cmdlet-Entwickler, der den Namen der Eigenschaft bestimmt. PowerShell verwendet weitgehend Standard-Klassen aus dem .Net-Framework, siehe Wikipedia:

    "Die auf dem .NET Framework basierende Windows PowerShell wurde speziell zum Zweck der Systemverwaltung entworfen."

    Die Eigenschaften und Methoden heißen einfach so, in jedem Cmdlet und auch in anderen .Net-basierten Programmiersprachen, wie z.B. VB.NET. Der Link, den ich geschickt hatte, ist auch nicht PowerShell speziell, sondern die Entwicklerreferenz für .NET.

    Viele Grüße

    Christoph

    Freitag, 23. Dezember 2016 10:31