none
Get-ChildItem File Filter CreationTime RRS feed

  • Frage

  • Hallo zusammen,

    ich möchte Files in eine Ordner nach CreationTime filtern. Und zwar ich brauche Files nur von eine Datum (Zeit soll nicht berücksichtigt werden). Es geht so:

    $Files = Get-ChildItem $SourceFolder |  Where-Object {$_.CreationTime -ge "03/24/2016" -and $_.CreationTime -le "03/25/2016"}

    Sobald ich zwei Variable nutze:

    $From = (Get-Date).AddDays(-1).ToShortDateString()
    $To = (Get-Date).ToShortDateString()

    $Files = Get-ChildItem $SourceFolder |  Where-Object {$_.CreationTime -ge $From -and $_.CreationTime -le $To}

    Klappt es nicht mehr. Es wurde eine amerikanische Schreibweise benötigt. Wie kann man es einfacher in diese Format den String zu konvertieren.

    So funktioniert leider nicht

    $To = Get-Date -Format "dd/MM/yyyy"

    Kommt deutsche Ausgabe.

    Sonntag, 27. März 2016 14:03

Antworten

  • @Tonibert
    >CreationTime ist kein Standard Property.Das musst du dir anzeigen/ausgeben lassen bzw. dieses pipen.

     

    Nein das ist -sorry- Quark. Die Properties sind immer da und benutzbar.  Einzig bei einer Ausgabe eines Objektes z.b. in der Konsole werden teilweise nur einige vorausgewählte Eigenschaften angezeigt. Da sind sie aber trotzdem. Ein extra select ist nicht nötig.
    Und das hier :

    ([System.DateTime]::Today.ToString("03/23/2016"))
    
     
     ist einfach das gleiche wie:
     
    "03/23/2016"

     
    also ein einfacher String. :)
    Entweder du kreierst aus einem String ein Datum:
     

    [datetime]"03/23/2016"

     
    oder du möchtest das heutige Datum:

     

    [System.DateTime]::Today
        

    Kombiniert ergibt das keinen Sinn.

    @Andrej
    Zum eigentlichen Problem: Der Grund warum das mit den Variablen nicht klappt, ist das du die Datums-Objekte nicht in strings verwandeln darfst, um einen Vergleich zu ermöglichen.

    $From = (Get-Date).AddDays(-2)
    $To = (Get-Date)
    
    Get-ChildItem $SourceFolder |  Where-Object { $_.CreationTime -ge $From -and $_.CreationTime -le $To}
     
    Grüße, Denniver



    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v4: Link ! Neue Version !
    (Schneller, besser + komfortabler scripten.)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.




    Mittwoch, 30. März 2016 18:24
    Moderator

Alle Antworten

  • Hi,

    CreationTime ist kein Standard Property.Das musst du dir anzeigen/ausgeben lassen bzw. dieses pipen.

    Der Code hier funktioniert bei mir!

    $SourceFolder= "C:\temp"
    
    Get-ChildItem -Path C:\temp|Select-Object -Property Name, CreationTime|
    Where-Object {$_.CreationTime -ge "03/20/2016" -and $_.CreationTime -le "03/23/2016"}

    und so auch mit Variablen

    $SourceFolder= "C:\temp"
    
    $from=([System.DateTime]::Today.ToString("03/23/2016"))
    $to=([System.DateTime]::Today.ToString("03/20/2016"))
    
    Get-ChildItem -Path $SourceFolder|Select-Object -Property Name, CreationTime|
    Where-Object {$_.CreationTime -ge $to -and $_.CreationTime -le $from}
    Eventuell musst du es noch auf die amerikanische Schreibweise anpassen.


    Gruß Toni! Wenn Dir meine Antwort hilft, markiere sie bitte als Antwort! Vielen Dank!




    • Bearbeitet tonibert Mittwoch, 30. März 2016 19:45
    Montag, 28. März 2016 18:07
  • @Tonibert
    >CreationTime ist kein Standard Property.Das musst du dir anzeigen/ausgeben lassen bzw. dieses pipen.

     

    Nein das ist -sorry- Quark. Die Properties sind immer da und benutzbar.  Einzig bei einer Ausgabe eines Objektes z.b. in der Konsole werden teilweise nur einige vorausgewählte Eigenschaften angezeigt. Da sind sie aber trotzdem. Ein extra select ist nicht nötig.
    Und das hier :

    ([System.DateTime]::Today.ToString("03/23/2016"))
    
     
     ist einfach das gleiche wie:
     
    "03/23/2016"

     
    also ein einfacher String. :)
    Entweder du kreierst aus einem String ein Datum:
     

    [datetime]"03/23/2016"

     
    oder du möchtest das heutige Datum:

     

    [System.DateTime]::Today
        

    Kombiniert ergibt das keinen Sinn.

    @Andrej
    Zum eigentlichen Problem: Der Grund warum das mit den Variablen nicht klappt, ist das du die Datums-Objekte nicht in strings verwandeln darfst, um einen Vergleich zu ermöglichen.

    $From = (Get-Date).AddDays(-2)
    $To = (Get-Date)
    
    Get-ChildItem $SourceFolder |  Where-Object { $_.CreationTime -ge $From -and $_.CreationTime -le $To}
     
    Grüße, Denniver



    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v4: Link ! Neue Version !
    (Schneller, besser + komfortabler scripten.)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.




    Mittwoch, 30. März 2016 18:24
    Moderator
  • OK,

    sorry!

    Die Properties sind immer da und benutzbar.  Einzig bei einer Ausgabe eines Objektes z.b. in der Konsole werden teilweise nur einige vorausgewählte Eigenschaften angezeigt. Da sind sie aber trotzdem. Ein extra select ist nicht nötig

    Dann habe ich es damals falsch verstanden!

    Ok, hab es verstanden...Hand gehoben und entschuldigt!


    Gruß Toni! Wenn Dir meine Antwort hilft, markiere sie bitte als Antwort! Vielen Dank!



    • Bearbeitet tonibert Mittwoch, 30. März 2016 19:39
    Mittwoch, 30. März 2016 19:35
  • Na, so schlimm wars nun auch wieder nicht. :-)

    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v4: Link ! Neue Version !
    (Schneller, besser + komfortabler scripten.)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Mittwoch, 30. März 2016 19:57
    Moderator
  • @Tonibert
    >CreationTime ist kein Standard Property.Das musst du dir anzeigen/ausgeben lassen bzw. dieses pipen.

     

    Nein das ist -sorry- Quark. Die Properties sind immer da und benutzbar.  Einzig bei einer Ausgabe eines Objektes z.b. in der Konsole werden teilweise nur einige vorausgewählte Eigenschaften angezeigt. Da sind sie aber trotzdem. Ein extra select ist nicht nötig.
    Und das hier :

    ([System.DateTime]::Today.ToString("03/23/2016"))
     
     ist einfach das gleiche wie:
     
    "03/23/2016"

     
    also ein einfacher String. :)
    Entweder du kreierst aus einem String ein Datum:
     

    [datetime]"03/23/2016"

     
    oder du möchtest das heutige Datum:

     

    [System.DateTime]::Today
        

    Kombiniert ergibt das keinen Sinn.

    @Andrej
    Zum eigentlichen Problem: Der Grund warum das mit den Variablen nicht klappt, ist das du die Datums-Objekte nicht in strings verwandeln darfst, um einen Vergleich zu ermöglichen.

    $From = (Get-Date).AddDays(-2)
    $To = (Get-Date)
    
    Get-ChildItem $SourceFolder |  Where-Object { $_.CreationTime -ge $From -and $_.CreationTime -le $To}
     
    Grüße, Denniver



    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v4: Link ! Neue Version !
    (Schneller, besser + komfortabler scripten.)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.




    Bei mir geht es leider nicht

    $From = (Get-Date).AddDays(-2)
    $To = (Get-Date)

    Get-ChildItem $SourceFolder |  Where-Object { $_.CreationTime -ge $From -and $_.CreationTime -le $To}

    Nur wenn ich es explizit $From in amerikanische Datum umstelle.

    Freitag, 1. April 2016 11:29