Question pourquoi ce con...vert ne fonctionne pas

Plus d'informations
il y a 15 ans 4 mois #8040 par jojo
Bonjour les Powershelleurs :laugh:

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 :P :

[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 :blink:

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.

Plus d'informations
il y a 15 ans 4 mois #8045 par Laurent Dardenne
Salut,
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.

Plus d'informations
il y a 15 ans 4 mois #8046 par jojo
merci laurent,

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:\&gt; $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:\&gt; driverquery /fo csv &gt; driver.csv
# ça me retourne la même erreur
PS C:\&gt; Import-Csv .\driver.csv

Import-Csv : Impossible de traiter l argument, car la valeur de l argument \&quot; name \&quot; n est pas valide. Modifiez la
valeur de l argument \&quot; name \&quot; et réexécutez l opération.
...etc[/code:1]

c'est quoi cet argument \&quot;name\&quot; ? 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.

Plus d'informations
il y a 15 ans 4 mois #8048 par Laurent Dardenne
jojo écrit:

c'est quoi cet argument \&quot;name\&quot; ? l'erreur comme tu vois est en relation avec le cmdlet Import-Csv

Aucune idée, 'name' n'est pas un paramètre de ce cmdlet, faut peut être regarder du coté de tes fichiers .ps1xml ?

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:

donc on ne peux pas pipper ConvertTo-Csv avec get-content

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:15

Tutoriels PowerShell

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

Plus d'informations
il y a 15 ans 4 mois #8053 par Arnaud Petitjean
Salut !

C'est curieux car chez moi ça marche nickel (sur un Windows Server 2003 R2 SP2):

[code:1]
PS &gt; tasklist /fo csv &gt; c:\temp\csvfile.csv
PS &gt; 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.

Plus d'informations
il y a 15 ans 4 mois #8073 par jojo
Bonjour

Arnaud écrit:

Salut !

C'est curieux car chez moi ça marche nickel (sur un Windows Server 2003 R2 SP2):

[code:1]
PS &gt; tasklist /fo csv &gt; c:\temp\csvfile.csv
PS &gt; 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.

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