PS ca y'est je débute

Le
Stephane (85)
Bonjour

Ca y'est je me plonge dans le bouqin et je commence l'initiation au
powershell. Dans un répertoire j'ai environ 300 sous-répertoire qui ont
chacun un fichier xls. De temps en temps, il arrive que lors de la mise
à jour, une erreur se produise et alors le fichier xls n'est pas générée
et le répertoire est vide.
Je voudrai avoir une commande (1 ligne) qui me donne le ou les
répertoires vides.
J'arrive à avoir les listing de tous les répertoires, de tous les
fichiers xls, mais je sais pas commet faire pour récupérer l'info comme
quoi le répertoire est vide.
C'est pas la solution toute faite que je cherche mais plutot des pistes
pour y arriver.

Merci
Stephane
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles LAURENT [MVP]
Le #17334431
"Stephane (85)" wrote:

Bonjour



Bonjour,

[...]
Je voudrai avoir une commande (1 ligne) qui me donne le ou les
répertoires vides.



Pour afficher tous les répertoires vides d'une racine donnée :
dir d:test -recurse |
? {$_.PSIsContainer -and ! $_.GetFiles().Count} |
% {$_.FullName}

Note 1: La recherche est récursive
Note 2: J'utilise ici les alias définis par défaut
Note 3: Cette commande PowerShell tient sur une seule ligne

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Stephane (85)
Le #17335671
Gilles LAURENT [MVP] a écrit :
Pour afficher tous les répertoires vides d'une racine donnée :
dir d:test -recurse |
? {$_.PSIsContainer -and ! $_.GetFiles().Count} |
% {$_.FullName}



Hou là, JE DEBUTE :-))))))))
Alors la première ligne j'avais (c'était pas la plus dure non plus :-))
La deuxième, partiellement: j'avais le PSIsCOntainer et GetFiles mais
pas le .Count() ni le and et encore moins le "?"
Le "?" il indique une condition pour aller à l'étape suivante FullName ?

Merci beaucoup
Stephane - Pas surpris de pas avoir pu pondre une ligne pareille :-)

Evidement ton truc fonctionne nickel !
Stephane (85)
Le #17335771
Stephane (85) a écrit :
Gilles LAURENT [MVP] a écrit :
Pour afficher tous les répertoires vides d'une racine donnée :
dir d:test -recurse |
? {$_.PSIsContainer -and ! $_.GetFiles().Count} |
% {$_.FullName}



Hou là, JE DEBUTE :-))))))))
Alors la première ligne j'avais (c'était pas la plus dure non plus :-))
La deuxième, partiellement: j'avais le PSIsCOntainer et GetFiles mais
pas le .Count() ni le and et encore moins le "?"



Je réctifie j'avais le ? enfin j'avais where-object, mais je savais pas
que c'était pareil :-))
idem pour le % je l'avais pas non plus.

Re-Merci

Stephane
Gilles LAURENT [MVP]
Le #17335891
"Stephane (85)" wrote:

> dir d:test -recurse |
> ? {$_.PSIsContainer -and ! $_.GetFiles().Count} |
> % {$_.FullName}

Hou là, JE DEBUTE :-))))))))



J'avoue avoir volontairement utilisé les alias pour rendre la commande moins
compréhensible :-) Je vous propose une version commentée et sans alias
ci-dessous.

Alors la première ligne j'avais (c'était pas la plus dure non plus :-))
La deuxième, partiellement: j'avais le PSIsCOntainer et GetFiles mais
pas le .Count() ni le and et encore moins le "?"
Le "?" il indique une condition pour aller à l'étape suivante FullName ?



# on récupére ici tous les fichiers et dossiers sous forme d'objets
# powershell est orienté objet et c'est bien cela sa force
Get-ChildItem d:test -recure |

# les objets transitent au travers du pipe
# on souhaite uniquement les dossiers ET ceux qui sont vides
# GetFiles().Count=0 donc ! GetFiles().Count = True
Where-Object {$_.PSIsContainer -and ! $_.GetFiles().Count} |

# les objets transitent au travers du pipe
# on possède maintenant notre collection d'objets de dossiers vides
# parcours de la collection d'objets et affichage du chemin complet du dossier
ForEach-Object {$_.FullName}

Merci beaucoup
Stephane - Pas surpris de pas avoir pu pondre une ligne pareille :-)

Evidement ton truc fonctionne nickel !



Merci ;-)
Je vous invite à jeter un oeil au livre "Windows PowerShell : Guide de
référence pour l'administration système" disponible aux édition ENI :

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Stephane (85)
Le #17342811
Gilles LAURENT [MVP] a écrit :
Merci ;-)
Je vous invite à jeter un oeil au livre "Windows PowerShell : Guide de
référence pour l'administration système" disponible aux édition ENI :



Oui merci c'est déjà lui que j'ai sous les yeux :-))
Il est très bien fait, par contre dès fois faut s'accrocher pour suivre
notamment dans le deboggage...
Par contre je pense que je vais leur envoyer un mail d'insultes car la
qualité du collage des pages est à chier... elles se détachent les unes
après les autres.

Stephane
Arnaud Petitjean [MVP]
Le #17349681
> Oui merci c'est déjà lui que j'ai sous les yeux :-))
Il est très bien fait, par contre dès fois faut s'accrocher pour suivre
notamment dans le deboggage...
Par contre je pense que je vais leur envoyer un mail d'insultes car la
qualité du collage des pages est à chier... elles se détachent les unes
après les autres.



Bonjour à tous,

...des fois faut s'accrocher pour suivre notamment dans le débogage...


En effet, cette partie n'est pas la plus facile. Et à expliquer encore moins
;-))

Quand on a des scripts assez complexes qui doivent être fiables pour la
prod, c'est très très utile.
C'est marrant mais ça m'a servi aujourd'hui ! J'avais développé un script
PowerShell qui tourne en tant que service.
Il scrute des répertoires et dès qu'il trouve un fichier d'un certain type
il déclenche des actions. C'est une sorte de workflow simplifié.
Or hier le service s'est planté pour une raison indéterminée.
Heureusement j'avais pris le soin d'attraper les erreurs critiques et de les
consigner dans un fichier. Ainsi en ouvrant le fichier de log aujourd'hui
j'ai tout de suite
trouvé la cause du problème et je l'ai corrigé sur le champs. Sans cela, je
sais pas comment j'aurais fait pour déterminer la cause du plantage.

Par contre je pense que je vais leur envoyer un mail d'insultes car la
qualité du collage des pages est à chier... elles se détachent les unes
après les autres.


Effectivement c'est un problème de collage qui est apparu lors des tous
premiers tirages.
Quand as tu acheté le livre ?
ENI m'a envoyé un livre la semaine dernière car je voulais vérifier que le
problème avait été résolu, et il l'est !
Je te propose de leur envoyer un email, et ils te feront je l'espère un
geste commercial.

Bon courage pour ton apprentissage de PowerShell.
Connais tu notre site communautaire entièrement dédié à PowerShell ?
http://www.powershell-scripting.com

Arnaud PETITJEAN
MVP Admin Framework - Windows PowerShell
http://www.powershell-scripting.com
Méta-MCI (MVP)
Le #17353401
Bonjour !

ils te feront je l'espère un geste commercial.



Un tube de colle gratuit ?

(désolé, pas pu résister)


@+
--
MCI
JF
Le #17360311
*Bonjour à tous * !

ils te feront je l'espère un geste commercial.


Un tube de colle gratuit ?
(désolé, pas pu résister)


Mettre plus de colle, ça doit résister.

--
Salutations, Jean-François.
Stephane (85)
Le #17369531
Arnaud Petitjean [MVP] a écrit :
Effectivement c'est un problème de collage qui est apparu lors des tous
premiers tirages.
Quand as tu acheté le livre ?



Dés le début, je l'avais en pré-commande avant la sorte du livre. Mais
j'avais pas eu le temps de m'y plonger jusqu'à maintenant. Et je vais
pas avoir beaucoup de temps pour continuer malheureusement...

ENI m'a envoyé un livre la semaine dernière car je voulais vérifier que
le problème avait été résolu, et il l'est !
Je te propose de leur envoyer un email, et ils te feront je l'espère un
geste commercial.



Oui je peux toujours essayer mais je me fais pas trop d'illusion.

Bon courage pour ton apprentissage de PowerShell.
Connais tu notre site communautaire entièrement dédié à PowerShell ?
http://www.powershell-scripting.com



Oui mais je débute vraiment :-))
En tout cas ton bouquin m'a permis d'entrevoir ce qu'il est possible de
faire avec PS et franchement c'est surprenant.

Stephane
Publicité
Poster une réponse
Anonyme