Question Recherche d'extensions multiples

Plus d'informations
il y a 8 ans 4 mois #24439 par Enouf
Bonjour tout le monde,

J'ai créé récemment un script, qui doit me permettre de recueillir la liste des fichiers non autorisés sur le réseau.
En effet, nous avons des fichiers avec trois extensions différentes, qui doivent être stockées à un seul endroit du réseau, et surtout pas ailleurs.
Pour vérifier cela, je fais une recherche de ces extensions à travers tous les lecteurs réseau disponibles et en écartant le seul dossier autorisé à stocker ces données.
Or, mon script ne fonctionne que si je n'ai qu'un chemin de recherche.
Je ne comprends pas ce qui se passe.
Je vous mets le script en PJ, car là je suis bloqué et je ne trouve pas la solution sur les problèmes déjà posés.
Je vous remercie par avance de votre aide.

La pièce jointe script_pour_forum.txt est absente ou indisponible

Pièces jointes :

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

Plus d'informations
il y a 8 ans 4 mois #24442 par Laurent Dardenne
Salut,
la construction de l'appel à la commande GCI est à revoir :
[code:1]
$path=\"C:\\" , \"G:\\"
Trace-Command ParameterBinding { Get-ChildItem -Path $path\* } -pshost

#DEBUG: ParameterBinding Information: 0 : BIND NAMED cmd line args [Get-ChildItem]
#DEBUG: ParameterBinding Information: 0 : BIND arg [C:\ G:\\*] to parameter [Path]
#DEBUG: ParameterBinding Information: 0 : COERCE arg to [System.String[]]
[/code:1]
Ici ton tableau est convertie en une string :
[code:1]
\"$path\"
#C:\ G:\
\"$path\*\"
#C:\ G:\*
[/code:1]
Ici on traite un tableau, donc une itération :
[code:1]
Trace-Command ParameterBinding { Get-ChildItem -Path 'c:\*','g:\*' } -pshost
#DEBUG: ParameterBinding Information: 0 : BIND NAMED cmd line args [Get-ChildItem]
#DEBUG: ParameterBinding Information: 0 : BIND arg [System.Object[]] to parameter [Path]
[/code:1]
Possible solution :
[code:1]
$path=\"C:\*\" , \"G:\*\"
Trace-Command ParameterBinding { Get-ChildItem -Path $path } -pshost
#DEBUG: ParameterBinding Information: 0 : BIND NAMED cmd line args [Get-ChildItem]
#DEBUG: ParameterBinding Information: 0 : BIND arg [System.Object[]] to parameter [Path]
#DEBUG: ParameterBinding Information: 0 : COERCE arg to [System.String[]]
[/code:1]
Ou encore construire les chemins selon les noms d'unité au sein d'une boucle :
[code:1]
$Unites='CG'
foreach ($Lecteur in ([char[]]$Unites)) { gci -path \"${Lecteur}:\*\" }
#dir lecteur : C
#dir lecteu [/code:1]

Tutoriels PowerShell

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

Plus d'informations
il y a 8 ans 4 mois #24444 par Enouf
Réponse de Enouf sur le sujet Re:Recherche d'extensions multiples
Merci, ça fonctionne c'est super :) J'aurais jamais pensé à le faire comme ça. En tout cas merci du coup de main.

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

Plus d'informations
il y a 8 ans 4 mois #24446 par Laurent Dardenne
Une écriture plus lisible pour le foreach du dernier exemple :
[code:1]
[string]$Unites='CG'
foreach ( $Lecteur in $Unites.GetEnumerator() ) { gci -path \"${Lecteur}:\*\" }
[/code:1]
Le type string est aussi un tableau de caractères.

Tutoriels PowerShell

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

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