2013-04-08 12 views
20

Uso un comando PowerShell per generare un report CSV di determinati tipi di file. Il mio obiettivo è scoprire quanti sono stati aggiunti durante un determinato intervallo di date. In questo momento, lo script trova tutto e ordina per data per trovare il mio numero. Vorrei modificare il comando per restituire solo oggetti all'interno di una data di creazione, cioè se questo file è stato creato tra il 1 marzo 2013 e il 31 marzo 2013. Probabilmente c'è un modo per limitare il comando per un intervallo di date, probabilmente usando Select- Oggetto, non riesco a capirlo.Powershell Get-ChildItem per creazione file Intervallo di date

Get-ChildItem 'PATH' -recurse -include @("*.tif*","*.jp2","*.pdf") | Select-Object FullName, CreationTime, @{Name="Mbytes";Expression={$_.Length/1Kb}}, @{Name="Age";Expression={(((Get-Date) - $_.CreationTime).Days)}} | Export-Csv 'PATH\scans.csv' 
+0

Per la cronaca, I' Non ho familiarità con Powershell e Non sapevo cosa cercare. Il comando che stavo usando è stato prelevato da altri siti online. Ho cercato su Google per trovare questa risposta e non ero in grado di farlo; ecco da dove veniva il mio pensiero sull'uso di Select-Object. Rifiuto e risentito le vostre dichiarazioni, questo dovrebbe essere un forum di aiuto; ma apprezzo il tuo aiuto. – Nathan

+3

+1 perché Nathan * ha fatto * uno sforzo. C'è una differenza tra qualcuno che non ha familiarità con una tecnologia (e potrebbe non sapere nemmeno cosa cercare) e qualcuno che non fa nessuno sforzo. [Chiarire il mio commento precedente - "+ 1" indica che ho svitato la tua domanda per neutralizzare i downvotes] :-) –

+1

Suppongo che mi aspetto di più. Una semplice ricerca per "data di creazione dei file get di powershell" su google gli darebbe tutto eccetto '-and' sul primo hit, e non hai bisogno della conoscenza di powershell per trovare quella frase di ricerca =) –

risposta

34

Usa Where-Object e testare il $_.CreationTime:

Get-ChildItem 'PATH' -recurse -include @("*.tif*","*.jp2","*.pdf") | 
    Where-Object { $_.CreationTime -ge "03/01/2013" -and $_.CreationTime -le "03/31/2013" } 
2

Usa Where-Object, come:

Get-ChildItem 'PATH' -recurse -include @("*.tif*","*.jp2","*.pdf") | 
Where-Object { $_.CreationTime -gt "03/01/2013" -and $_.CreationTime -lt "03/31/2013" } 
Select-Object FullName, CreationTime, @{Name="Mbytes";Expression={$_.Length/1Kb}}, @{Name="Age";Expression={(((Get-Date) - $_.CreationTime).Days)}} | 
Export-Csv 'PATH\scans.csv' 
1

è stato risolto ...

Get-ChildItem C:\Windows\ -recurse -include @("*.txt*","*.pdf") | 
Where-Object {$_.CreationTime -gt "01/01/2013" -and $_.CreationTime -lt "12/02/2014"} | 
Select-Object FullName, CreationTime, @{Name="Mbytes";Expression={$_.Length/1Kb}}, @{Name="Age";Expression={(((Get-Date) - $_.CreationTime).Days)}} | 
Export-Csv C:\search_TXT-and-PDF_files_01012013-to-12022014_sort.txt 
+0

per favore usa la citazione di blocco per aggiungendo 4 spazi a 'Get-ChildItem' – HKTonyLee