Question
Test d'une case vide d'un CSV
- Desquesses Maxime
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 8 ans 1 mois #25223
par Desquesses Maxime
Test d'une case vide d'un CSV a été créé par Desquesses Maxime
Bonjour a tous j'ai déjà fait quelque script en PowerShell mais la pour le coup je coince sur mon script pour désactiver les utilisateurs par rapport à une date, je m'explique, j'ai un CSV avec une date et cette case peut être vide par la suite je fait une comparaison de date mais le problème c'est qu'il compare la date vide à celle du jour et me donne un résultat erroné comme la case et vide j'aimerais pouvoir dire que Si la case en question est vide il ne compare pas la date.
Merci pour votre aide
[code:1]$DFC=$user.Datedefindecontrat.Trim
$DATE = get-date -UFormat \"%d/%m/%Y\"
if ($DFC -ne \"\" )
{
$DFC.CompareTo($DATE)
}
else
{
exit
}[/code:1]
<br><br>Message édité par: Arnaud, à: 4/04/18 17:33
Merci pour votre aide
[code:1]$DFC=$user.Datedefindecontrat.Trim
$DATE = get-date -UFormat \"%d/%m/%Y\"
if ($DFC -ne \"\" )
{
$DFC.CompareTo($DATE)
}
else
{
exit
}[/code:1]
La pièce jointe powershellscriptig.ps1 est absente ou indisponible
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 8 ans 1 mois #25225
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Test d'une case vide d'un CSV
Salut,
communique nous un jeu de test, ton code sans tes données n'est pas suffisant
maxdes écrit:
Si tu appelles la méthode Trim, c'est une string.
A priori ton pb est de typer, juste après l'import-csv, les données AVANT de les manipuler.
Ainsi, le nom de la propriété 'DateDeFinDeContrat' correspondra à son contenu.
communique nous un jeu de test, ton code sans tes données n'est pas suffisant
maxdes écrit:
Cela n'existe pas, $null c'est possible, mais on ne connait pas le type de $user.Datedefindecontrat.la date vide
Si tu appelles la méthode Trim, c'est une string.
A priori ton pb est de typer, juste après l'import-csv, les données AVANT de les manipuler.
Ainsi, le nom de la propriété 'DateDeFinDeContrat' correspondra à son contenu.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Desquesses Maxime
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 8 ans 1 mois #25226
par Desquesses Maxime
Réponse de Desquesses Maxime sur le sujet Re:Test d'une case vide d'un CSV
[code:1]
$header = \"Matricule\",\"Nom\",\"Prénom\",\"Nom_Jeune_Fille\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"Datedefindecontrat\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"OctimeWeb\",\"E-mail professionnel\",\"35\",\"Portable professionnel\",\"Fax professionnel\",\"38\",\"39\",\"40\",\"41\",\"Code Pole\",\"Pole\",\"Code service\",\"Service\",\"Code ss service\",\"SousService\"
#Importation du CSV et déclaration Header
$Users = Import-Csv -Path \"D:\partages\Technique et Achat\SI\Scripts\Scripts Powershell\Move_Ad8uSER\EXPORTPAIE.CSV\" -Delimiter \";\" -Header $header -Encoding Default
Foreach ($user in $Users) {
$Nom=$user.Nom.Trim();
$Prenom=$user.Prénom.Trim();
$NomComplet=$Prenom+$Nom
$NomCN=\"CN=$NomComplet\"
$Service=$user.Service.Trim();
$SousService=$user.SousService.Trim();
$Pole=$user.Pole.Trim();
$DFC=$user.Datedefindecontrat.Trim();
$Identifiant = $user.OctimeWeb.Trim();
$DATE = get-date -UFormat \"%d/%m/%Y\"
if ($DFC -ne \"\" )
{
$DFC.CompareTo($DATE)
}
else
{
exit
}
write-host $DFC
write-host $Identifiant
}
[/code:1]
voila tout mon code je précise que j'ai fait d'autre script avec ces header donc a priori ils sont juste<br><br>Message édité par: Arnaud, à: 3/04/18 17:22
$header = \"Matricule\",\"Nom\",\"Prénom\",\"Nom_Jeune_Fille\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"Datedefindecontrat\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"OctimeWeb\",\"E-mail professionnel\",\"35\",\"Portable professionnel\",\"Fax professionnel\",\"38\",\"39\",\"40\",\"41\",\"Code Pole\",\"Pole\",\"Code service\",\"Service\",\"Code ss service\",\"SousService\"
#Importation du CSV et déclaration Header
$Users = Import-Csv -Path \"D:\partages\Technique et Achat\SI\Scripts\Scripts Powershell\Move_Ad8uSER\EXPORTPAIE.CSV\" -Delimiter \";\" -Header $header -Encoding Default
Foreach ($user in $Users) {
$Nom=$user.Nom.Trim();
$Prenom=$user.Prénom.Trim();
$NomComplet=$Prenom+$Nom
$NomCN=\"CN=$NomComplet\"
$Service=$user.Service.Trim();
$SousService=$user.SousService.Trim();
$Pole=$user.Pole.Trim();
$DFC=$user.Datedefindecontrat.Trim();
$Identifiant = $user.OctimeWeb.Trim();
$DATE = get-date -UFormat \"%d/%m/%Y\"
if ($DFC -ne \"\" )
{
$DFC.CompareTo($DATE)
}
else
{
exit
}
write-host $DFC
write-host $Identifiant
}
[/code:1]
voila tout mon code je précise que j'ai fait d'autre script avec ces header donc a priori ils sont juste<br><br>Message édité par: Arnaud, à: 3/04/18 17:22
Connexion ou Créer un compte pour participer à la conversation.
- Desquesses Maxime
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 8 ans 1 mois #25227
par Desquesses Maxime
Réponse de Desquesses Maxime sur le sujet Re:Test d'une case vide d'un CSV
J'ai du effectuer un Trim pour supprimer les espaces existant commme il gênait dans la recherche pour l'AD sur mon autre script
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 8 ans 1 mois #25229
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Test d'une case vide d'un CSV
Ton code fonctionne, mais à part la présence de l'instruction 'exit' je ne vois pas quel est le problème
. Si ce n'est que CompareTo émet une donnée dans le pipeline :
[code:1]
Foreach ($user in $Users) {
$Nom=$user.Nom.Trim()
$Prenom=$user.Prénom.Trim()
$NomComplet=$Prenom+$Nom
$NomCN=\"CN=$NomComplet\"
$Service=$user.Service.Trim()
$SousService=$user.SousService.Trim()
$Pole=$user.Pole.Trim()
$DFC=$user.Datedefindecontrat.Trim()
$Identifiant = $user.OctimeWeb.Trim()
$DATE = get-date -UFormat \"%d/%m/%Y\"
if ($DFC -ne [string]::Empty )
{
$resultat=$DFC.CompareTo($DATE)
}
else
{
continue
}
write-host \"$DFC : $resultat\"
write-host $Identifiant
}
[/code:1]
Et comme je n'ai pas de données de test, vérifie si le pb est du côté des données.
Résultat de CompareTo selon le contenu de DFC :
[code:1]
$DFC='29/03/2018'
$DFC.CompareTo('27/03/2018')
#1
$DFC.CompareTo('28/03/2018')
#1
$DFC.CompareTo('29/03/2018')
#0
$DFC.CompareTo('30/03/2018')
#-1
$DFC.CompareTo('31/03/2018')
#-1
$DFC=[string]::Empty
$DFC.CompareTo('')
#0
$DFC.CompareTo('27/03/2018')
#-1
$DFC.CompareTo('28/03/2018')
#-1
$DFC.CompareTo('29/03/2018')
#-1
$DFC.CompareTo('30/03/2018')
#-1
$DFC.CompareTo('31/03/2018')
#-1
$DFC='29/03/2018'
$DFC.CompareTo('')
#1
[/code:1]
[code:1]
Foreach ($user in $Users) {
$Nom=$user.Nom.Trim()
$Prenom=$user.Prénom.Trim()
$NomComplet=$Prenom+$Nom
$NomCN=\"CN=$NomComplet\"
$Service=$user.Service.Trim()
$SousService=$user.SousService.Trim()
$Pole=$user.Pole.Trim()
$DFC=$user.Datedefindecontrat.Trim()
$Identifiant = $user.OctimeWeb.Trim()
$DATE = get-date -UFormat \"%d/%m/%Y\"
if ($DFC -ne [string]::Empty )
{
$resultat=$DFC.CompareTo($DATE)
}
else
{
continue
}
write-host \"$DFC : $resultat\"
write-host $Identifiant
}
[/code:1]
Et comme je n'ai pas de données de test, vérifie si le pb est du côté des données.
Résultat de CompareTo selon le contenu de DFC :
[code:1]
$DFC='29/03/2018'
$DFC.CompareTo('27/03/2018')
#1
$DFC.CompareTo('28/03/2018')
#1
$DFC.CompareTo('29/03/2018')
#0
$DFC.CompareTo('30/03/2018')
#-1
$DFC.CompareTo('31/03/2018')
#-1
$DFC=[string]::Empty
$DFC.CompareTo('')
#0
$DFC.CompareTo('27/03/2018')
#-1
$DFC.CompareTo('28/03/2018')
#-1
$DFC.CompareTo('29/03/2018')
#-1
$DFC.CompareTo('30/03/2018')
#-1
$DFC.CompareTo('31/03/2018')
#-1
$DFC='29/03/2018'
$DFC.CompareTo('')
#1
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Desquesses Maxime
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 8 ans 1 mois #25235
par Desquesses Maxime
Réponse de Desquesses Maxime sur le sujet Re:Test d'une case vide d'un CSV
Désolé pour la réponse tardive, enfaite j'aimerais justement que ce soit la date du jour que je compare à la variable $DFC mais sa je n'y arrive pas
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.045 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Test d'une case vide d'un CSV