Question Gestion de Date dans un Tableau

Plus d'informations
il y a 3 ans 11 mois - il y a 3 ans 10 mois #29811 par THOMAS
Bonjour,

Merci par avance de votre aide.

Voici mon problème:
je souhaite récupérer uniquement les MediaID qui ont une date comprise entre deux dates (aujourd'hui et -5 jours)
à partir d'un extract d'un fichier txt que j'obtiens avec des commandes de l'application.
je crée un Tableau avec deux colonnes MediaID et LastMount (date) , j'aimerai sélectionner seulement
les MediaID qui ont moins de 5 jours.
MediaID  LastMount 
-------  --------- 
000038L5 29/03/2020
000042L5 09/06/2019
000044L5 11/11/2019
000045L5 05/04/2020
000050L5 10/11/2019
000051L5 10/11/2019

et la je suis un peu perdu...

j'arrive cependant avec un résultat en testant à $True
les valeurs dans mon tableau. mais le format date n'est pas pris en compte

@{MediaID=000038L5; LastMount=29/03/2020}
#fichier d'inventaire
$NbuInventaire = \"C:\*\nbuinventaire.txt\"
$file = get-content $NbuInventaire | where {$_ -match \"Iron_Mountain\"} |Select-Object -Skip 3 

# Mise en forme du fichier d'inventaire

 $file | foreach {

    $_.Remove(8,70)

}| Out-File  \"C:\Users\*\newNbuInventaire.txt\"

#Nouveau fichier d'inventaire
$NewFile = Get-Content \"C:\*\newNbuInventaire.txt\"

# création du tableau MediaID et LAstMount
$tableau = @()

foreach ($ligne in $Newfile) {
    
    # je split chaque ligne du fichier pour récuper les info MediaID et LastMount
    $LigneTrait = $ligne -split ('')
    
    # Je convertie au format Date les resultats LastMount
    
    # Date de retention à 5 jours
    $Retention = (get-date).AddDays(-5).ToShortDateString()
    # récuperation de la Linge LastMount
    $RecupLastMount = $LigneTrait[2]
    # je la convertie en format DateTime court
    $LastMount = [datetime]::Parse($RecupLastMount, [System.Globalization.CultureInfo]::GetCultureInfo('fr-FR')
    
    $Object=[pscustomobject]@{
    
    # Ligne MediaID auquel j'ajoute L5    
    MediaID = $LigneTrait[0]+'L5'
    #
    LastMount = $LastMount.ToShortDateString()
    }

   $tableau+=$Object
   }

foreach ($i in $tableau){

       if ( $LastMountLess5D = $LastMount.AddDays(-5) ){
       
           if ( ($LastMountLess5D.ToShortDateString() -gt $Retention) -eq $true){   
            
            Write-Host \" $i \" -ForegroundColor Green 

            }
            else {

            write-host \" $i \" -ForegroundColor Cyan
    
             }
         }
}

En espérant avoir été assez clair.
Dernière édition: il y a 3 ans 10 mois par Arnaud Petitjean.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 ans 10 mois #29891 par Philippe
Réponse de Philippe sur le sujet Gestion de Date dans un Tableau
salut dus69

un peu tard mais pour un autre peu être :
if ( $LastMountLess5D = $LastMount.AddDays(-5) ){
sur cette ligne qui controle ta date tu a deux erreur
- dans un if ce n'est pas = mais -eq
- en faisant comme ça tu n'a que les lignes à date - 5, pour toutes les depuis la date - 5 il faut faire supérieur ou égal à date soit "-ge"

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.058 secondes
Propulsé par Kunena