Question
script qui fonctionne seulement en mode intéractif
- rocchietta
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 13 ans 7 mois #12476
par rocchietta
script qui fonctionne seulement en mode intéractif a été créé par rocchietta
Bonjour à tous.
je rencontre une erreur d'exécution avec un script mais seulement lorsque je le lance directement avec powershell.exe
J'obtiens une erreur \"impossible d'indexer dans un objet type System.Collection.arrayList\".
Voici un bout du code :
[code:1]
Get-ChildItem $Path -Recurse -Force | Where-Object {$_.Length -gt 0}| Select-Object Id,Name,Directory,Extension,Length,CreaztionTime,LastWriteTime,FullName,Hash | %{$_.Id='';$_.Hash=Get-MD5($_.FullName);$_} | export-csv -Path $Csv -encoding \"UTF8\" -notype
[/code:1]
Le plantage se fait lors de l'exécution de
[code:1]$_.Hash=Get-MD5($_.FullName)[/code:1].
Le script fonctionne très bien lorsqu'il est lancé en mode intéractif.
Quelqu'un pourrait-il m'orienter vers une explication ?
je rencontre une erreur d'exécution avec un script mais seulement lorsque je le lance directement avec powershell.exe
J'obtiens une erreur \"impossible d'indexer dans un objet type System.Collection.arrayList\".
Voici un bout du code :
[code:1]
Get-ChildItem $Path -Recurse -Force | Where-Object {$_.Length -gt 0}| Select-Object Id,Name,Directory,Extension,Length,CreaztionTime,LastWriteTime,FullName,Hash | %{$_.Id='';$_.Hash=Get-MD5($_.FullName);$_} | export-csv -Path $Csv -encoding \"UTF8\" -notype
[/code:1]
Le plantage se fait lors de l'exécution de
[code:1]$_.Hash=Get-MD5($_.FullName)[/code:1].
Le script fonctionne très bien lorsqu'il est lancé en mode intéractif.
Quelqu'un pourrait-il m'orienter vers une explication ?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 13 ans 7 mois #12478
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:script qui fonctionne seulement en mode intéractif
Sous PS, l'appel de fonction n'utilise pas de parenthéses.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- rocchietta
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 13 ans 7 mois #12479
par rocchietta
Réponse de rocchietta sur le sujet Re:script qui fonctionne seulement en mode intéractif
Le retrait des parenthèses ne résout pas l'erreur.
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 13 ans 7 mois #12480
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:script qui fonctionne seulement en mode intéractif
Bonjour,
Get-ChildItem ne renvoie pas les propriétés 'Id' et 'Hash'. Ces propriétés n'existent pas sur l'objet 'System.IO.FileInfo'.
Il faut donc que tu les ajoutes au niveau du Select-Object (Name) et les calculer pour chaque fichier renvoyé par le pipeline (Expression) :
[code:1]
Get-ChildItem $Path -Recurse -Force | Where-Object {$_.Length -gt 0}| Select-Object @{Name=\"Id\";Expression={\"\"}},Name,Directory,Extension,Length,CreationTime,LastWriteTime,FullName,@{Name=\"Hash\";Expression={Get-MD5 $_.FullName}} | export-csv -Path $Csv -encoding \"UTF8\" -notype
[/code:1]
Je n'ai pas testé... Mais cela devrait fonctionner
@ +
Matthew
Get-ChildItem ne renvoie pas les propriétés 'Id' et 'Hash'. Ces propriétés n'existent pas sur l'objet 'System.IO.FileInfo'.
Il faut donc que tu les ajoutes au niveau du Select-Object (Name) et les calculer pour chaque fichier renvoyé par le pipeline (Expression) :
[code:1]
Get-ChildItem $Path -Recurse -Force | Where-Object {$_.Length -gt 0}| Select-Object @{Name=\"Id\";Expression={\"\"}},Name,Directory,Extension,Length,CreationTime,LastWriteTime,FullName,@{Name=\"Hash\";Expression={Get-MD5 $_.FullName}} | export-csv -Path $Csv -encoding \"UTF8\" -notype
[/code:1]
Je n'ai pas testé... Mais cela devrait fonctionner
@ +
Matthew
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 13 ans 7 mois #12481
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:script qui fonctionne seulement en mode intéractif
kortex écrit:
Matthew, Select-Object construit un PSObject, donc pas de soucis pour les propriétés inexistantes sur l'objet source.
Peux nous communiquer le lien ou le code de la fonction Get-MD5 ?Le retrait des parenthèses ne résout pas l'erreur.
Matthew, Select-Object construit un PSObject, donc pas de soucis pour les propriétés inexistantes sur l'objet source.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 13 ans 7 mois #12483
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:script qui fonctionne seulement en mode intéractif
Laurent Dardenne écrit:
Matthew, Select-Object construit un PSObject, donc pas de soucis pour les propriétés inexistantes sur l'objet source.[/quote]
Je le sais bien... Justement, le code fournie au départ par kortex ne permet pas d'ajouter de nouvelles propriétés :
[code:1] | %{$_.Id='';$_.Hash=Get-MD5 $_.FullName ;$_} | [/code:1]
D'après mes tests, pas d'erreur mais cela n'affiche rien...
Message édité par: Matthew BETTON, à: 8/08/12 11:22<br><br>Message édité par: Matthew BETTON, à: 8/08/12 11:24
Matthew, Select-Object construit un PSObject, donc pas de soucis pour les propriétés inexistantes sur l'objet source.[/quote]
Je le sais bien... Justement, le code fournie au départ par kortex ne permet pas d'ajouter de nouvelles propriétés :
[code:1] | %{$_.Id='';$_.Hash=Get-MD5 $_.FullName ;$_} | [/code:1]
D'après mes tests, pas d'erreur mais cela n'affiche rien...
Message édité par: Matthew BETTON, à: 8/08/12 11:22<br><br>Message édité par: Matthew BETTON, à: 8/08/12 11:24
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.051 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- script qui fonctionne seulement en mode intéractif