Question Export-Csv et Where-Object

Plus d'informations
il y a 6 ans 8 mois #23897 par Faucon
Réponse de Faucon sur le sujet Re:Export-Csv et Where-Object
Hello,

Merci pour vos réponses,

Je ne peux pour le moment pas joindre de fichier exemple, sinon pour te répondre Laurent le fichier n'intégre pas une ligne d'info sur plusieurs ligne de texte en revanche chaque fais 302 caractère de longueur.

Je me suis inspiré de la première réponse de marcci pour essayer de récupérer ma valeur ODATE en utilisant Substring(,) sauf qu'il me crache une erreur :

[code:1]Exception calling \"Substring\" with \"2\" argument(s): \"Index and length must refer to a location within the string. Parameter name: length\"[/code:1]

Uniquement au démarrage du script et après il me récupère bien mon ODATE car je le vosi s'afficher

Voici le nouveau code :

[code:1]$date = (get-date).AddDays(-4)
$dateformated = (get-date $date -Uformat \"%Y%m%d\"«»)
$OrderIDjobsAsupprimer = ctmpsm -listall ALLFIELDS_FULL > export.csv

$jobsAsupprimer = get-content export.csv


foreach ($line in $jobsAsupprimer)
{

$OrderID = $line.Substring(0,9)
$JobName = $line.Substring(10,66)
$Odate = $line.Substring(81,9)
if ($Odate -le $dateformated)
{
write-host $Odate
#ctmpsm -updateajf $OrderID HOLD
#ctmpsm -updateajf $OrderID DELETE
}
}[/code:1]

Cordialement,

Mitakue

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

Plus d'informations
il y a 6 ans 8 mois #23924 par Laurent Dardenne
Le format du fichier n'étant du csv, mais des champs de longueur fixe on peut procéder comme ceci :
[code:1]
$lines=gc c:\temp\data.txt
$Count=$Lines.count-1
$o=foreach ($line in $lines[2..$count])
{
if ($line -match '^(?<OrderID>.{8}) (?<JobName>.{65}) (?<Type>.{5}) (?<Date>.{8}).*')
{
Write-debug \"OrderID = $($matches.OrderID)\"
Write-debug \"JobName = $($matches.JobName)\"
Write-debug \"Date string = $($matches.Date)\"
[PSCustomObject]@{
PSTypeName=\"InfoControlM\"
#on peut aussi mémoriser en texte et ajouter une méthode conversion sur le type personnalisé 'InfoControlM'
Date=([datetime]::«»ParseExact($matches.Date,'yyyyMMdd',$null))
OrderID = $matches.OrderID #Trim() ?
JobName = $matches.JobName.Trim() # A vérifier si nécessaire
}
}
else
{ Write-Error \"Ligne en erreur :$line\" }
}
$O
[/code:1]
Voir aussi la fonction Import-FixedLength

Tutoriels PowerShell

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

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