Encontrar la fecha de modificación de un archivo/carpeta

Soy muy nuevo en PowerShell, y esperaba que me ayudaran a crear un script que me diga la fecha de modificación de un archivo.

Me gustaría saber más sobre PowerShell, ya que siento que estoy pidiendo mucho (todo mi tiempo libre de esta semana se dedicará a aprender mejor PowerShell). Apuntarme en la dirección de dónde aprender a hacer esto sería muy útil también.

Este es el resumen completo. Necesito ejecutar un informe diario que compruebe una lista de ordenadores en 90 almacenes diferentes para asegurarse de que se ha realizado una determinada copia de seguridad. La fecha de modificación debe indicar si se ha realizado la copia de seguridad, y se fijará en la fecha anterior.

Si la fecha de modificación es ayer, entonces no es necesario que haya una salida. Si no es ayer, me gustaría tener la salida en la ventana de PowerShell, o en un archivo de texto, lo que sea más fácil.

También tengo que comprobar que una carpeta no tiene más de siete días para cada uno de los 90 almacenes, con el mismo criterio para la salida. La idea que tengo sería así para cada tienda

Para la tienda 1:

Check file date for \\server\store\computer\c:\folder\"newest modified date in folder"
if date equals yesterday
   then do nothing
if date does not equal yesterday
   then output "Test did not backup"

check folder modified date for \\server\sample\store\backupfolder
if date equals <7 days old
   then do nothign
if date equals >7 days old
   then output "test did not backup"

Perdón por no demostrar mi esfuerzo de investigación, soy muy nuevo en Powershell y tenía un plazo para hacer esto. Desde ayer he aprendido a hacer todo lo que necesitaba hacer con este script. Gracias a @Keith por ponerme en el camino correcto. Terminé utilizando el siguiente código para lograr mi objetivo de sólo out-putting la ubicación donde el resultado era falso.

$a = Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-7)}
if ($a = (Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-7)}))
{
}
Else
{
    'STORE XXX HAS NOT RECEIVED ANY ORDERS IN THE PAST 7 DAYS'
}

$b = Get-ChildItem \\COMP NAME\Folder\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-1)}
if ($b = (Get-ChildItem \\COMP NAME\TFolder\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-1)}))
{
}
Else
{
    'STORE XXX DID NOT RUN ITS BACKUP LAST NIGHT'
}
Solución

Si ejecuta los comandos Get-Item o Get-ChildItem, estos mostrarán objetos System.IO.FileInfo y System.IO.DirectoryInfo que contienen esta información, por ejemplo

Get-Item c:\folder | Format-List  

O puede acceder a la propiedad directamente así:

Get-Item c:\folder | Foreach {$_.LastWriteTime}

Para empezar a filtrar carpetas & archivos basados en la última hora de escritura puede hacer esto:

Get-ChildItem c:\folder | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-7)}
Comentarios (4)

Esto es lo que me ha funcionado:

$a = Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-7)}
if ($a = (Get-ChildItem \\server\XXX\Received_Orders\*.* | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-7)}  
#Im using the -gt switch instead of -ge
{}
Else
{
'STORE XXX HAS NOT RECEIVED ANY ORDERS IN THE PAST 7 DAYS'
}

$b = Get-ChildItem \\COMP NAME\Folder\*.* | Where{$_.LastWriteTime -ge (Get-Date).AddDays(-1)}
if ($b = (Get-ChildItem \\COMP NAME\TFolder\*.* | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-1)))}
{}
Else
{
'STORE XXX DID NOT RUN ITS BACKUP LAST NIGHT'
}
Comentarios (0)

Código PowerShell para encontrar todos los archivos de la biblioteca de documentos modificados en los últimos 2 días.

$web = Get-SPWeb -Identity http://siteName:9090/ 
        $list = $web.GetList("http://siteName:9090/Style Library/")
        $folderquery =  New-Object Microsoft.SharePoint.SPQuery  
        $foldercamlQuery =  
        '    
                  Folder 
             ' 
        $folderquery.Query = $foldercamlQuery 
        $folders = $list.GetItems($folderquery) 
        foreach($folderItem in $folders) 
        { 
            $folder = $folderItem.Folder
            if($folder.ItemCount -gt 0){ 
            Write-Host " find Item count " $folder.ItemCount
                $oldest = $null
                $files = $folder.Files

                $date = (Get-Date).AddDays(-2).ToString(“MM/dd/yyyy”)
                foreach ($file in $files){ 
                    if($file.Item["Modified"]-Ge $date)
                    {
                        Write-Host "Last 2 days modified folder name:"   $folder   " File Name: "  $file.Item["Name"]   " Date of midified: "  $file.Item["Modified"] 
                    } 
                } 
            } 
            else
             { 
                Write-Warning "$folder['Name'] is empty" 
            } 
        }
Comentarios (1)