Question
Récuperer l'espace disk restant à distance(Résolu)
- TIti
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 39
- Remerciements reçus 0
il y a 16 ans 1 mois #846
par TIti
Récuperer l'espace disk restant à distance(Résolu) a été créé 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
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.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 16 ans 1 mois #847
par Arnaud Petitjean
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 ou d'un conseil ?
Réponse de Arnaud Petitjean sur le sujet Re:Foreach dans un foreach
Bonjour Berurier et bienvenue
,
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 \"$z\"} |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

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 \"$z\"} |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 ou d'un conseil ?
Connexion ou Créer un compte pour participer à la conversation.
- TIti
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 39
- Remerciements reçus 0
il y a 16 ans 1 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 -> 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
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 -> 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.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 16 ans 1 mois #849
par Arnaud Petitjean
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 ou d'un conseil ?
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... ! 
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

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 ou d'un conseil ?
Connexion ou Créer un compte pour participer à la conversation.
- TIti
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 39
- Remerciements reçus 0
il y a 16 ans 1 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
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
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

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

Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- TIti
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 39
- Remerciements reçus 0
il y a 16 ans 1 mois #851
par TIti
Réponse de TIti sur le sujet Re:Foreach dans un foreach
Avec le fichier, c'est mieux ...
Désolé !!
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.060 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Récuperer l'espace disk restant à distance(Résolu)