Suche nach dem Änderungsdatum einer Datei/eines Ordners

Ich bin ein absoluter PowerShell-Neuling und hatte gehofft, etwas Hilfe beim Erstellen eines Skripts zu bekommen, das mir das Änderungsdatum einer Datei mitteilt.

Ich wünschte, ich wüsste mehr über PowerShell, denn ich habe das Gefühl, dass ich viel verlange (meine gesamte Freizeit in dieser Woche wird dem besseren Erlernen von PowerShell gewidmet sein). Es wäre auch sehr hilfreich, wenn Sie mir einen Tipp geben könnten, wo ich lernen kann, wie man das macht.

Hier ist der vollständige Überblick. Ich muss täglich einen Bericht ausführen, der eine Liste von Computern in 90 verschiedenen Filialen daraufhin überprüft, ob eine bestimmte Sicherung durchgeführt wurde. Das Änderungsdatum soll Auskunft darüber geben, ob die Sicherung durchgeführt wurde, und wird auf das vorherige Datum gesetzt.

Wenn das Änderungsdatum von gestern ist, ist eine Ausgabe nicht erforderlich. Wenn es nicht gestern ist, möchte ich die Ausgabe im PowerShell-Fenster oder in einer Textdatei haben, je nachdem, was einfacher ist.

Außerdem muss ich für jeden der 90 Speicher überprüfen, dass ein Ordner nicht älter als sieben Tage ist, wobei die gleichen Kriterien für die Ausgabe gelten. Die Idee, die ich habe, sieht für jede Filiale folgendermaßen aus

Für Geschäft 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"

Es tut mir leid, dass ich meine Forschungsbemühungen nicht nachweisen kann, aber ich bin sehr neu in Powershell und hatte eine Deadline, um dies zu erledigen. Seit gestern habe ich gelernt, wie ich alles, was ich mit diesem Skript tun musste, durchführen kann. Vielen Dank an @Keith, der mich auf den richtigen Weg gebracht hat. Am Ende habe ich den folgenden Code verwendet, um mein Ziel zu erreichen, nur den Ort auszugeben, an dem das Ergebnis falsch war.

$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'
}
Lösung

Wenn Sie die Befehle Get-Item oder Get-ChildItem ausführen, werden die Objekte System.IO.FileInfo und System.IO.DirectoryInfo ausgegeben, die diese Informationen enthalten, z. B.:

Get-Item c:\folder | Format-List  

Sie können auch direkt auf die Eigenschaft zugreifen, z. B. so

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

Um mit dem Filtern von Ordnern & Dateien basierend auf der letzten Schreibzeit zu beginnen, können Sie dies tun:

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

Hier ist, was für mich funktioniert hat:

$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'
}
Kommentare (0)

PowerShell-Code zum Auffinden aller Dokumentbibliotheksdateien, die in den letzten 2 Tagen geändert wurden.

$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" 
            } 
        }
Kommentare (1)