Home > Software engineering >  How to use a PowerShell script to automatically delete files older than six months from an Azure Vir
How to use a PowerShell script to automatically delete files older than six months from an Azure Vir

Time:01-05

I created a virtual machine in Azure, and then I deployed the Windows service into it. Every day, it inserts the logs into the C drive. I want to automatically delete the six-month-older files using a PowerShell script.

CodePudding user response:

Voici comment vous pouvez utiliser PowerShell pour supprimer les fichiers plus anciens que six mois dans un dossier sur une machine virtuelle Azure:

Ouvrez PowerShell et utilisez la commande cd pour accéder au dossier contenant les fichiers à supprimer. Par exemple: cd C:\Logs

Utilisez la commande Get-ChildItem pour obtenir la liste de tous les fichiers dans le dossier. Par exemple:

$files = Get-ChildItem

Utilisez la commande Where-Object pour filtrer la liste de fichiers et ne conserver que ceux qui sont plus anciens que six mois.

Par exemple:

$oldFiles = $files | Where-Object {$_.LastWriteTime -lt (Get-Date).AddMonths(-6)}

Utilisez la commande Remove-Item pour supprimer chaque fichier de la liste filtrée. Par exemple:

$oldFiles | ForEach-Object {Remove-Item $_.FullName}

Ce script devrait parcourir le dossier spécifié, obtenir la liste de tous les fichiers plus anciens que six mois, et les supprimer. N'oubliez pas de remplacer C:\Logs par le chemin du dossier contenant les fichiers à supprimer.

CodePudding user response:

I used the below PowerShell script to delete the six-month-old files:

$paths = @("C:\TempFiles")
$months = -6
function removeOldItems() {
    $items = Get-ChildItem $path -Recurse -Include "*.txt" | Where-Object { ($_.CreationTime -le $(Get-Date).AddMonths($months)) }
    if ($items) {
        $items | Remove-Item -Force
    }
    return $items
}

foreach ($path in $paths) {

    Write-Host "Trying to delete files older than 6 months files, in the folder $path" -ForegroundColor Green
    $items = @(removeOldItems)
    if (!$items) {
        Write-Host "Did not remove anything."
    }
    else {
        Write-Host "Removed $($items.Count) items!"
    }
    
}
  • Related