Question Récuperer l'espace disk restant à distance(Résolu)

Plus d'informations
il y a 16 ans 7 mois #846 par TIti
Bonjour,
J'ai bien du mal à utiliser un foreach dans un foreach...
Dans cet exemple, je souhaite obtenir le taux d'espace disk libre pour plusieurs partitions sur des serveurs distants.
Cela fonctionne et mon fichier resultatok.txt contient les bonnes données. Mais le prompt powershell me renvoie plusieurs erreurs. J'ai l'impression qu'il fait un second passage sur les données et me signale une division par 0 impossible...
Mais (j'insiste), le fichier est Ok ...
Oulalalala, ils font vraiment n'importe quoi ces débutants :0)
Merci pour votre aide

[code:1]
$c=get-credential
foreach ($mag in get-content c:\nummag.txt)
{foreach ($z in get-content c:\lettre.txt){
$a=gwmi Win32_LogicalDisk -computername $mag -credential $c| where {$_.deviceid -eq \"$z\"} |select-object freespace
$b=gwmi Win32_LogicalDisk -computername $mag -credential $c| where {$_.deviceid -eq \"$z\"} |select-object size
[int64]$a.freespace/[int64]$b.size |out-file c:\resultatok.txt -append -encoding ASCII}}

PS : le message d'erreur =>
Get-WmiObject : Paramètre non valide
At line:6 char:8
+ $b=gwmi <<<< Win32_LogicalDisk -computername $mag -credential $c| where {$_.deviceid -eq \"$z\"} |select-object size
Attempted to divide by zero.
At line:7 char:21
[/code:1]
Message édité par: Berurier, à: 24/08/07 08:57

Message édité par: Arnaud, à: 24/08/07 09:01

Message édité par: Arnaud, à: 24/08/07 09:29<br><br>Message édité par: Arnaud, à: 27/08/07 20:46

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

Plus d'informations
il y a 16 ans 7 mois #847 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:Foreach dans un foreach
Bonjour Berurier et bienvenue :cheer: ,

Oulalalala, ils font vraiment n'importe quoi ces débutants :0)


Mais non, mais non... Pour un débutant je trouve que tu te défends plutôt pas si mal... ;)

Je n'ai pas encore testé ton script mais à première vue je dirais la chose suivante : De mémoire je pense que ta requête WMI va te lister tous les volumes logiques, il se peut qu'il en liste un comme le lecteur de CD et te retourne 0, du coup la division échoue. Mais je suppose que tu fais le tri des lecteurs avec ton fichier texte lettre.txt.

Il faudrait que tu intercales avant ta division un Write-Host sur tes différentes variables, comme ça tu sauras d'où vient le problème.

D'autre part, quand tu fais ceci :
[code:1]
$a=gwmi Win32_LogicalDisk -computername $mag -credential $c| where {$_.deviceid -eq \&quot;$z\&quot;} |select-object freespace
[/code:1]
Je doute de l'utilité du select-object dans la mesure où tu fais ensuite un $a.freespace pour récupérer ta valeur.

Enfin dernier point, pour que nous puissions tester ton script dans de bonnes conditions, il serait bien que tu publies aussi tes fichiers textes dans le forum.

Cordialement,

Arnaud<br><br>Message édité par: Arnaud, à: 24/08/07 09:28

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 16 ans 7 mois #848 par TIti
Réponse de TIti sur le sujet Re:Foreach dans un foreach
Bingo et ... merci Arnaud

1 / J'ai effectivement retiré mon select qui, comme tu le dis ... ne sert à RIEN !
2 / Je test avec un write-host, mais pas d'info.
3 / J'ouvre mon lettre.txt avec un éditeur de texte (notepad++) complètement au hasard et je vois que ma fin de fichier se termine avec des caractères bizarres (Affichage -&gt; Afficher tous les caractères). Pourquoi pas ? Je retire les caractères, relance, et tout est Ok

Alala, ce mélange de magie et d'info, un pur bonheur !!!! ;)

Merci encore
Cordialement
Beru

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

Plus d'informations
il y a 16 ans 7 mois #849 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:Foreach dans un foreach
Je suis content que ça fonctionne. Mais je crois bien que la magie n'y est pour rien, en tout cas pour cette fois... ! :laugh:

Tu avais du créer ton fichier avec le WordPad (Write.exe) qui à coup sur t'as rajouté des caractères. Le mieux est d'utiliser un éditeur de textes comme notepad+ ou simplement le notepad.

Il faut savoir que get-content s'adapte au contenu à lire que ce soit de l'ASCII pur, de l'ANSI ou de l'Unicode. Mais il ne faut pas mélanger les 3 !!! D'autre part, lorsque tu vas générer un fichier avec PowerShell ce sera la plupart du temps en Unicode (je dis la plupart du temps car dès fois ça peut être de l'ASCII, mais c'est rare).

Dernière chose, comme il s'agit d'un script intéressant j'aimerais bien, tant qu'à faire, enrichir la bibliothèque avec. Peux tu donc, poster tes fichiers textes associés pour en faire profiter la communauté ?

A bientôt,

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 16 ans 7 mois #850 par TIti
Réponse de TIti sur le sujet Re:Foreach dans un foreach
Bonsoir,
Voici donc en pièces jointes le fichier.
J'ai (tenté) de commenter les quelques lignes.
A vérifier avant de publier des bêtises :whistle:
Le fichier espacedisk.txt

Créer un fichier nummag.txt
serveur1
serveur2 ...etc
Créer un fichier lettre.txt
C:
E:
A consommer .... après modération ;)<br><br>Message édité par: Berurier, à: 24/08/07 21:02
Pièces jointes :

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

Plus d'informations
il y a 16 ans 7 mois #851 par TIti
Réponse de TIti sur le sujet Re:Foreach dans un foreach
Avec le fichier, c'est mieux ...
Désolé !!

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

Pièces jointes :

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

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