Question Erreur Out-File "Format du chemin d'accès non vali

Plus d'informations
il y a 17 ans 2 mois #3703 par Olivier
Bonjour à tous !

j'ai dernièrement fais l'acquisition du formidable bouquin \"Windows PowerShell\" et j'y fais mes débuts ...

Faisant quelques tests pour mieux comprendre, je suis tombé sur la commande suivante :

[code:1]Get-Command | Foreach {Get-Help $_ -detailed |Out-File -FilePath C:\temp\$_.txt –Encoding ASCII}[/code:1]
Voulant tester cette commande, j'ai modifier quelques peu le chemin d'accès comme suit :

[code:1]Get-Command | Foreach {Get-Help $_ -detailed |Out-File -FilePath F:\Windows\PowerShell\'test script'\$_.txt –Encoding ASCII}[/code:1]

Après le lancement de la commande, j'ai bien 244 fichiers qui ont chacun le nom correspondant de la commande en question mais j'ai aussi dans la console plein de messages d'erreur me disant que
\"Out-File : Le format du chemin d'accès donné n'est pas pris en charge\"

J'ai pensé que c'était dû au fait qu'il y a un espace dans le chemin d'accès mais même en modifiant le nom du dossier 'test script' en 'test' cela ne change en rien le résultat.

Concernant le nombre de commandes, il devrait y en avoir 271 suite à l'info donnée comme suit :
[code:1](Get-Command).count
271[/code:1]

Mais là j'en ai que 244 alors peut-être viendrait-il du nom de certaines commandes qui ne sont pas supportées par Out-File ? (via le $_ ...)

Merci d'avance à ceux qui pourront me donner une piste ou une solution à ce problème ;)
Olivier<br><br>Message édité par: Olivier, à: 12/01/09 21:27

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

Plus d'informations
il y a 17 ans 2 mois #3706 par Jacques Barathon
Je dirais que la différence vient du fait que toutes les commandes retournées par get-command n'ont pas un nom qui peut permettre de générer un nom de fichier.

Sur mon poste, par exemple, j'ai de nombreuses commandes qui sont en fait des fonctions permettant notamment d'accéder directement aux disques et aux ruches de la base de registre, ou de reproduire des commandes classiques de l'invite de commandes standard, par exemple :

C:
D:
HKLM:
HKCU:
cd..

Les commandes ci-dessus contiennent des caractères illégaux qui vont générer une erreur dans out-file.

Il y a peut-être d'autres cas d'erreurs, mais c'en est déjà un de taille.

Janel

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

Plus d'informations
il y a 17 ans 2 mois #3707 par Olivier
Merci beaucoup Janel pour cette réponse.

Par contre, est-il possible de pouvoir remédier à cette \&quot;erreur\&quot; en forçant le fait que la fonction Out-File ne puisse pas interpréter les noms de fichier comme une commande ?

Merci d'avance ;)

Olivier

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

Plus d'informations
il y a 17 ans 2 mois #3708 par Jacques Barathon
Il y a sans doute plusieurs stratégies possibles pour éviter d'avoir ce flot d'erreurs. Pour ma part, j'essaierais en faisant un test de validité du chemin d'accès généré avec le nom de la commande. Quelque chose comme ça:

[code:1]
get-command | foreach {if (test-path \&quot;\$_.txt\&quot; -isvalid) {get-help $_ -full | out-file \&quot;c:\...\$_.txt\&quot; -encoding ASCII}}
[/code:1]
J'ai ajouté un test dans la boucle, en utilisant la commandelette test-path avec le paramètre -isvalid. Ca ne résoud peut-être pas tous les cas mais sans doute 99%.

Au passage, j'affiche l'aide complète (paramètre -full) plutôt que détaillée. Il y a plus d'infos, notamment sur les paramètres.

Une autre approche pourrait être de capturer les erreurs et de les ignorer pour qu'elles n'apparaissent pas sur la console. A tester, je n'ai pas trop le temps ce soir. :)

Janel

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

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