Question
Impossible de convertir la valeur"" en type .
- serval13
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 9
- Remerciements reçus 0
[code:1][Impossible de convertir la valeur « 1 562 » en type « System.Int32 ». Erreur : « Input string was not in a correct format. »
+ $objCluster.MemUsagePct = \"(0 : p2)\" -f
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument : ( : ) [], RuntimeException
+ FullyQualifiedErrorId : InvalidCastFromStringToInteger
[/code:1]
vous pouvez voir le resulta sur la premiere ligne de mon tableau ci-joins
[code:1]$vm = @($cluster|Get-VM)
$objCluster.ClusterName = $cluster.Name
$objCluster.NumHost = `
$cluster.ExtensionData.Summary.NumHosts
$objCluster.NumVM = $vm.Count
$objCluster.NumDatastore = `
$cluster.ExtensionData.Datastore.Count
$objCluster.NumNetwork = `
$cluster.ExtensionData.Network.Count
$objCluster.AssignedCpu = ($vm | Where {
$_.PowerState -eq \"PoweredOn\"} |
Measure-Object -Property NumCpu -Sum).Sum
$objCluster.NumCores = `
$cluster.ExtensionData.Summary.NumCpuCores
$objCluster.vCpuPerCore = “{0:n0}” -f
($objCluster.AssignedCpu / $objCluster.NumCores)
$objCluster.TotalCpuGhz = “{0:n0}” -f
($cluster.ExtensionData.Summary.TotalCpu / 1000)
$objCluster.TotalMemGB = “{0:n0}” -f
($cluster.ExtensionData.Summary.TotalMemory / 1GB )
$objCluster.AssignedMemGB = “{0:n0}” -f (( $vm|
Where {$_.PowerState -eq “PoweredOn”} |
Measure-Object -Property MemoryMB -Sum ).Sum /1024)
$objCluster.MemUsagePct = \"(0 : p2)\" -f
($objCluster.AssignedMemGB / $objCluster.TotalMemGB )
$objCluster
}
}[/code:1]
La pièce jointe cluster.zip est absente ou indisponible
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
... pouvez vous m'aider
oui mais peut tu aussi nous aider en mettant les balises code sur les parties scripts, stp. Ca nous facilite le travail de lecture de ton code !
pour ça tu surligne ton code et tu clique sur le bouton code au dessus de la zone de saisi du texte
->tu as la possibilité d’éditer (modifier) ton premier post
merci
de plus peut tu nous donner le message d'erreur en entier pour que l'on puisse localisé la ligne en erreur !
a bientôt
Connexion ou Créer un compte pour participer à la conversation.
- serval13
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 9
- Remerciements reçus 0
en fait mon code fonctionne sauf pour une ligne qui a une valeur superieur a 999 semble il .
j'ai joins un fichier image , le probleme est sur la premiere ligne<br><br>Message édité par: serval13, à: 11/01/16 15:48
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
pas soucis, merci et bienvenuej'ai modifier mon post desoelr encore c'est la premiere fois que j'effectue une demande sur votre forum.
tu a mal recopié le code du livre
essai avec des accolades plutôt que des parenthèses, comme ceci :
[code:1]$objCluster.MemUsagePct = \"{0:«»p2}\" -f ($objCluster.AssignedMemGB / $objCluster.TotalMemGB )
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- serval13
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 9
- Remerciements reçus 0
car pour le reste des valeurs ce fonctione cf(image jointe)
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
??? je vois pas tropje pense que comme je suis en int32 les valeurs superieure a 999 ne sont au bon format
si tu pense que int32 ce limite à moins de 1000 tu fais une erreur
int32 veux dire entier de 32 bits
les valeurs entières 32 bits vont de 0 à 4 294 967 295
ou de -2&#8201;147&#8201;483&#8201;648 à 2&#8201;147&#8201;483&#8201;647 pour les valeurs signés
a tu le même message ou est t'il légèrement diffèrent ?
pour que tu comprenne mieux, je vais décomposé ton message d'erreur
la première partie message d'erreur :
[Impossible de convertir la valeur « 1 562 » en type « System.Int32 ». : indique que la valeur 1 562 ne peut etre converti en int32. Bizarre mais la suite indique pourquoi !
Erreur : « Input string was not in a correct format. » un complément à l'erreur qui indique que la chaine de caractère (string) passé en paramètre n'est pas au bon format pour être converti. En effet powershell ne comprend pas l'espace entre le 1 et le 5 dans la convertion en numerique de la chaine passé en paramètre
si tu test la ligne suivante, tu aura l'erreur qui suit qui est le même que toi :
[code:1][int32](\"1 532\"«»)
Impossible de convertir la valeur « 1 532 » en type « System.Int32 ». Erreur : « Le format de la chaîne d'entrée est incorrect. »
Au caractère Ligne:1 : 1
+ [int32](\"1 532\"«»)
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument : (:«») [], RuntimeException
+ FullyQualifiedErrorId : InvalidCastFromStringToInteger[/code:1]
suite du message d'erreur :
+ $objCluster.MemUsagePct = \"(0 : p2)\" -f
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument : ( : ) [], RuntimeException
+ FullyQualifiedErrorId : InvalidCastFromStringToInteger
ici le message d'erreur indique que le paramètre passé est invalide mais si on regarde la dernier ligne on n'a InvalidCastFromStringToInteger ce qui confirme la première partie du message
pour ce qui est de la chaine \"(0 : p2)\" elle n'a aucun autre effet que affiché ou affecté \"(0 : p2)\" à écran ou à une variable
et $objCluster.MemUsagePct = \"(0 : p2)\" -f n'a autre resultat que d'affiché le message :
Vous devez fournir une expression de valeur à droite de l'opérateur « -f ».
mais si je fais la correction proposé et donc que je considère que \"(0 : p2)\" devrait être \"{0: p2}\" (sans espace), la valeur renvoyer n'est pas un entier !!
Le \"p2\" indique que l'on veux un pourcentage à deux décimales
nous avons donc un autre message d'erreur si la variable $objCluster.MemUsagePct attend elle un entier :
[code:1][int32]$objCluster.MemUsagePct = \"{0:«»p2}\" -f (1532/2112)
Impossible de convertir la valeur « 72,54 % » en type « System.Int32 ». Erreur : « Le format de la chaîne d'entrée est incorrect. »
Au niveau de ligne : 1 Caractère : 19
+ [int32]$objCluster.MemUsagePct <<<< = \"{0:«»p2}\" -f (1532/2112)
+ CategoryInfo : MetadataError: (:«») [], ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException[/code:1]
ton message d'erreur me semble incomplet ! mais je pense que ça doit dépendre de la version de ton powershell ou/et de Windows
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Impossible de convertir la valeur"" en type .