Question
pourquoi ce con...vert ne fonctionne pas
- jojo
-
Auteur du sujet
- Hors Ligne
- Membre elite
-
- Messages : 187
- Remerciements reçus 0
j'ai un problème avec les conversions des fichiers cmdlet convert-* un petit exemple vaux mieux qu'un long discours:
[code:1]# j'utilise la commande tasklist pour exporter au format CSV
PS C:\> tasklist /fo csv > csvfile.csv
PS C:\> type csvfile.csv
\"Nom de l'image\",\"PID \",\"Nom de la session\",\"Numéro de session\",\"Utilisation mémoire\"
\"System Idle Process\",\"0\",\"Console\",\"0\",\"16 Ko\"
\"System\",\"4\",\"Console\",\"0\",\"212 Ko\"
\"smss.exe\",\"648\",\"Console\",\"0\",\"372 Ko\"
\"csrss.exe\",\"1200\",\"Console\",\"0\",\"2 188 Ko\"
\"winlogon.exe\",\"1224\",\"Console\",\"0\",\"1 516 Ko\"
# je veux maintenant utiliser import-csv
PS C:\> import-csv .\csvfile.csv
# ça me retourne ce message d'erreur
Import-Csv Impossible de traiter l argument, car la valeur de l argument \" name \" n est pas valide.
Modifiez la valeur de l argument \" name \" et réexécutez l opération.
Au niveau de ligne 1 Caractère 11
CategoryInfo InvalidArgument (Import-Csv), PSArgumentException
FullyQualifiedErrorId Argument,Microsoft.PowerShell.Commands.ImportCsvCommand
# un autre essai
PS C:\> cat csvfile.csv | ConvertTo-Csv > t.csv
PS C:\> import-csv .\t.csv
PSPath : C:\
PSParentPath : C:\
PSChildName : csvfile.csv
PSDrive : D
PSProvider : Microsoft.PowerShell.Core\FileSystem
ReadCount : 1
Length : 0
PSPath : C:\
PSParentPath : C:\
PSChildName : csvfile.csv
PSDrive : D
PSProvider : Microsoft.PowerShell.Core\FileSystem
ReadCount : 2
Length : 85
PSPath : C:\
PSParentPath : C:\
PSChildName : csvfile.csv
PSDrive : D
PSProvider : Microsoft.PowerShell.Core\FileSystem
ReadCount : 3
Length : 47
## pourquoi la conversion ne marche pas[/code:1]
je peux faire ceci directement avec powershell
[code:1]get-process | export-csv > csvfile.csv
import-csv .\csvfile.txt[/code:1]
mais je veux comprendre pourquoi ça ne marche pas avec le premier exemple
Merci les gars
EDIT: j'ai changer le format du code d'erreur car il y a des caractères qui ne sont pas bien géré dans le forum...
Message édité par: jojo, à: 12/11/10 13:56<br><br>Message édité par: jojo, à: 12/11/10 13:57
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
pour l'erreur je ne sais pas, pb de format? Sous ps v2 cela fonctionne, utilises-tu ps v1 ?
Pour le second pb, Get-Content ajoute des propriétés à l'objet, et ConvertTo-csv attend un objet. A partir de celui-ci il récupère ses propriètés et leurs contenu afin de les formater.
Length est une propriété de la classe [String].
Si tu utilises Get-member tu verras la différence entre une simple chaîne et une chaîne récupérée par Get-Content :
[code:1]
$s=cat csvfile.csv
#Ajout de membre
$s[0]|gm
$s2=dir |% {$_.fullname}
#pas d'ajout
$s2[0]|gm
$S2|ConvertTo-Csv
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- jojo
-
Auteur du sujet
- Hors Ligne
- Membre elite
-
- Messages : 187
- Remerciements reçus 0
Salut,
pour l'erreur je ne sais pas, pb de format? Sous ps v2 cela fonctionne, utilises-tu ps v1 ?
c'est un ps v2
[code:1]PS C:\> $PSVersionTable
Name Value
----
CLRVersion 2.0.50727.3053
BuildVersion 6.0.6002.18111
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1[/code:1]
c'est bizarre, car j'ai tester de nouveau avec une autre commande qui permet un format en csv mais c'est la même erreur
[code:1]PS C:\> driverquery /fo csv > driver.csv
# ça me retourne la même erreur
PS C:\> Import-Csv .\driver.csv
Import-Csv : Impossible de traiter l argument, car la valeur de l argument \" name \" n est pas valide. Modifiez la
valeur de l argument \" name \" et réexécutez l opération.
...etc[/code:1]
c'est quoi cet argument \"name\" ? l'erreur comme tu vois est en relation avec le cmdlet Import-Csv
Pour le second pb, Get-Content ajoute des propriétés à l'objet, et ConvertTo-csv attend un objet. A partir de celui-ci il récupère ses propriètés et leurs contenu afin de les formater.
Length est une propriété de la classe [String].
Si tu utilises Get-member tu verras la différence entre une simple chaîne et une chaîne récupérée par Get-Content :
[code:1]
$s=cat csvfile.csv
#Ajout de membre
$s[0]|gm
$s2=dir |% {$_.fullname}
#pas d'ajout
$s2[0]|gm
$S2|ConvertTo-Csv
[/code:1]
merci laurent, donc on ne peux pas pipper ConvertTo-Csv avec get-content<br><br>Message édité par: jojo, à: 12/11/10 16:29
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Aucune idée, 'name' n'est pas un paramètre de ce cmdlet, faut peut être regarder du coté de tes fichiers .ps1xml ?c'est quoi cet argument \"name\" ? l'erreur comme tu vois est en relation avec le cmdlet Import-Csv
Sinon faut traquer la bête :
[code:1]
Trace-Command ParameterBinding {Import-Csv .\driver.csv} -filepath C:\Temp\pb.Log
[/code:1]
Je n'ai pas de pb sur mon poste Seven (Fr).
jojo écrit:
En thèorie c'est possible, mais le résultat a peu d'usage.<br><br>Message édité par: Laurent Dardenne, à: 15/11/10 21:15donc on ne peux pas pipper ConvertTo-Csv avec get-content
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
C'est curieux car chez moi ça marche nickel (sur un Windows Server 2003 R2 SP2):
[code:1]
PS > tasklist /fo csv > c:\temp\csvfile.csv
PS > Import-CSV c:\temp\csvfile.csv
[/code:1]
Quelle version d'OS utilises tu ? Quelle langue ? Le mien est une version française.
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- jojo
-
Auteur du sujet
- Hors Ligne
- Membre elite
-
- Messages : 187
- Remerciements reçus 0
Arnaud écrit:
Salut !
C'est curieux car chez moi ça marche nickel (sur un Windows Server 2003 R2 SP2):
[code:1]
PS > tasklist /fo csv > c:\temp\csvfile.csv
PS > Import-CSV c:\temp\csvfile.csv
[/code:1]
Quelle version d'OS utilises tu ? Quelle langue ? Le mien est une version française.
Arnaud
désolé Arnaud du retard, j'ai un windows XP service pack 2 32bits et une version française
es-ceun bug ?
merci<br><br>Message édité par: jojo, à: 18/11/10 09:33
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- pourquoi ce con...vert ne fonctionne pas