Jump to content

Ordner nach Datum sortieren - PS-Script


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo

 

Ich bin zur Zeit an einem Projekt dass Ordner nach Datum sortieren und ältere aktivieren soll.

Da ich gerne mit Powershell arbeite, wenn auch erst kurz, wollte ich das ganze mal mit einem Script nach Datum sortieren.

Leider funktioniert das nicht so wie ich es gern hätte.

 

Hier mein Script:

 

Get-ChildItem \\Filer1\Data$\S_Finanzen\Informatik -Recurse |`

Sort-Object -Property LastWriteTime –Descending |`

Where-Object {$_.Mode -notlike "d*"} |`

Select-Object -First 30 |`

Format-Table -Property LastWriteTime,FullName –AutoSize |`

Out-GridView

 

Hier die Fehlermeldung:

 

Sort-Object : Es wurde kein Positionsparameter gefunden, der das Argument "â€Descending |
Where-Object {.Mode -notlike d*} |
Select-Object -First 30 |
Format-Table -Property LastWriteTime,FullName â€AutoSize" akzeptiert.
In H:\ZLI_Ausbildung\batch\Ordner_Sortierung.ps1:17 Zeichen:1
+ Sort-Object -Property LastWriteTime –Descending |`
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Sort-Object], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SortObjectCommand

 

Ich hoffe jemand kann mir ein bisschen helfen.

Link zu diesem Kommentar

Hi,

 

falls du das von irgendeiner Internetseite kopiert hast, solltest du alle Zeichen einmal durchgehen und prüfen, ob da nicht ein - (Bindestrich) bspw. zum – (Gedankenstrich) wurde. In solchen Fällen hilft es immer, den Text in Notepad o.ä. zu kopieren und dort "Korrektur zu lesen". Anführungszeichen unten/oben sind da auch gerne Kandidaten. ;)

 

Gruß

Jan

bearbeitet von testperson
Link zu diesem Kommentar
Zitat

falls du das von irgendeiner Internetseite kopiert hast, solltest du alle Zeichen einmal durchgehen und prüfen, ob da nicht ein - (Bindestrich) bspw. zum – (Gedankenstrich) wurde.

Nein, habe es mit Hilfe eines Kollegen geschrieben, der weiss nur leider auch nicht weiter.

Eigentlich war das ganze ein Befehlt in einer Zeile, er hat vorgeschlagen nach den Pipes Zeilenumbrüche einzufügen um es besser lesbar zu machen.. :aha2:

Könnte es an dem liegen?

Aja, ich schreibe das ganze mit Visual Studio Code..

Link zu diesem Kommentar

Hi,

 

habe grade nochmal geschaut. Hier im Forum scheint der Text falsch formatiert zu werden. Für Code wäre übrigens der Code-Tag ganz gut. :)

Dein Where-Object müssest du allerdings auch mit dem Sort-Object tauschen. Ebenfalls kannst du keine "formatierte Tabelle (ft)" an Out-GridView weitergeben, also die Zeile einfach mal weglassen.

 

Gruß

Jan

Link zu diesem Kommentar

Ich bezweifel mal, dass nach Format-Table noch was sinnvolles rauskommt, da es IMHO die Inhalte nach Format-Table keine Objekte mehr sind, die sich weiter verarbeiten lassen.
Und rein optisch ist das "-" vor Descending ein anderes "-".
Bei mir funktioniert die o.a. Syntax ohne Format-Table und ein getauschtes "-".
PS: auf die korrekter Sortierung habe ich erstmal nicht geachtet => siehe testperson

bearbeitet von 4077
Link zu diesem Kommentar

Ein einigermaßen aktuelles Powershell vorausgesetzt, sollte das hier reichen:

Get-ChildItem \\Filer1\Data$\S_Finanzen\Informatik -Recurse -Directory |
    Sort-Object -Property LastWriteTime -Descending |
        Select-Object -First 30 -Property LastWriteTime,FullName |
            Out-GridView

Statt Out-GridView, kannst Du natürlich auch Format-Table benutzen ... die Properties kannst Du dann da weglassen, die hast Du schon im Select-Object.  

 

Bitte bitte bitte: niemals Backticks verwenden, wenn es nicht wirklich wirklich wriklich dringend nötig ist. Das wird so gut wie immer als sehr schlechter Stil angesehen. ;-)   ... und ist im Zweifel auch noch fehlerträchtig.

 

Edit:  Ich sehe gerade, dass Du in Deinem Where-Object-Filter nach Mode -notlike "d*" filterst. Damit filterst Du alle Ordner raus. Ich nahm an, dass Du eben genau die Ordner sortieren wolltest!? Seit Powershell v3.0 hat das cmdlet Get-ChildItem den Parameter -File und -Directory. Damit limitierst Du die Ergebnisse auf Dateien bzw. Ordner. Dann brauchst Du das später nicht aufwändig rausfiltern. ;-) 

bearbeitet von BOfH_666
Code korrigiert: -File -> -Directory
Link zu diesem Kommentar
vor 5 Stunden schrieb Sarina321:
 

Sort-Object -Property LastWriteTime –Descending |`

Habt Ihr das möglicherweise in Word (oder einer anderen Textverarbeitung) geschrieben? Der Bindestrich ist in der Tat nicht der "normale" Dash, das ist der von Word gern automatisch ersetzte lange Strich. Wurde ja schon erwähnt :-) Und in Zeiten von Unicode landet der dann halt auch im Skript - und Sort-Object kann dann nichts damit anfangen.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...