Question Impossible de convertir la valeur"" en type .

Plus d'informations
il y a 10 ans 2 mois #21238 par serval13
bonjour j'ai le message suivant lors de l'execution de mon scirpt ci-dessous pouvez vous m'aider



[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

<br><br>Message édité par: serval13, à: 11/01/16 15:48

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

Plus d'informations
il y a 10 ans 2 mois #21241 par Philippe
salut serval13

... 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
-&gt;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.

Plus d'informations
il y a 10 ans 2 mois #21244 par serval13
j'ai modifier mon post desoelr encore c'est la premiere fois que j'effectue une demande sur votre forum.


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

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

Plus d'informations
il y a 10 ans 2 mois #21245 par Philippe
serval13 écrit:

j'ai modifier mon post desoelr encore c'est la premiere fois que j'effectue une demande sur votre forum.

pas soucis, merci et bienvenue

tu a mal recopié le code du livre
essai avec des accolades plutôt que des parenthèses, comme ceci :
[code:1]$objCluster.MemUsagePct = \&quot;{0:«»p2}\&quot; -f ($objCluster.AssignedMemGB / $objCluster.TotalMemGB )
[/code:1]

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

Plus d'informations
il y a 10 ans 2 mois #21248 par serval13
6ratus merci ton retour mais le probléme n'est pas lié au parenthese mais je pense que comme je suis en int32 les valeurs superieure a 999 ne sont au bon format

car pour le reste des valeurs ce fonctione cf(image jointe)

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

Plus d'informations
il y a 10 ans 2 mois #21251 par Philippe
serval13 écrit:

je pense que comme je suis en int32 les valeurs superieure a 999 ne sont au bon format

??? je vois pas trop
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&amp;#8201;147&amp;#8201;483&amp;#8201;648 à 2&amp;#8201;147&amp;#8201;483&amp;#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](\&quot;1 532\&quot;«»)

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](\&quot;1 532\&quot;«»)
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument : (:«») [], RuntimeException
+ FullyQualifiedErrorId : InvalidCastFromStringToInteger[/code:1]

suite du message d'erreur :
+ $objCluster.MemUsagePct = \&quot;(0 : p2)\&quot; -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 \&quot;(0 : p2)\&quot; elle n'a aucun autre effet que affiché ou affecté \&quot;(0 : p2)\&quot; à écran ou à une variable
et $objCluster.MemUsagePct = \&quot;(0 : p2)\&quot; -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 \&quot;(0 : p2)\&quot; devrait être \&quot;{0: p2}\&quot; (sans espace), la valeur renvoyer n'est pas un entier !!
Le \&quot;p2\&quot; 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 = \&quot;{0:«»p2}\&quot; -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 &lt;&lt;&lt;&lt; = \&quot;{0:«»p2}\&quot; -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.

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