Question
Impossible de convertir la valeur"" en type .
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Pour ce traitement, je te conseille de typer tes variables :quelle serait alors la meilleure solution
[code:1][String]$Str
[Int]$NombreCalculé= $Str * 1.5[/code:1]
Cela facilite la relecture en explicitant ce que le code récupère et manipule.
Ceci dit cela n'évitera pas une transformation de chaîne via un appel à Replace() ou autre.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- serval13
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 9
- Remerciements reçus 0
j'ai ajouter a mon code des balise avec des write-host
et dans les resultats je constate que les blanc ne sont pas supprimer
function Get-ClusterSummary {
$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
$a = New-Object System.Globalization.CultureInfo(\"fr-FR\")
$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 )
$testmemgb=$objCluster.TotalMemGB
$objCluster.AssignedMemGB = \"{0:n0}\" -f (( $vm|Where {$_.PowerState -eq “PoweredOn”} | Measure-Object -Property MemoryMB -Sum ).Sum /1024)
write-host \"Avant :\" $testmemgb
$testmemgb1 = $testmemgb.replace(\" \", \"\")
write-host \"Apres :\" $testmemgb1
$objCluster
}
}
resultat
Avant : 2 112
Apres : 2 112
Avant : 256
Apres : 256
Avant : 512
Apres : 512
Avant : 768
Apres : 768
Avant : 448
Apres : 448
Avant : 512
Apres : 512
Avant : 448
Apres : 448
Avant : 512
Apres : 512
et en ligne de commande
'1 525'.replace(' ','')
1525<br><br>Message édité par: serval13, à: 14/01/16 12:12
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
pour te simplifié la vie pour les tests, j'ai réduit le code :
[code:1]$objCluster = “” | Select ClusterName, NumHost, NumVM, `
NumDatastore, NumNetwork, AssignedCpu, NumCores, `
vCpuPerCore, TotalCpuGHz, TotalMemGB, AssignedMemGB, `
MemUsagePct
$objCluster.TotalMemGB = “{0:n2}” -f (4398046511104 / 1GB«»)
$objCluster.AssignedMemGB = “{0:n2}” -f (3980024 / 1024)
$objCluster.MemUsagePct = “{0:«»p2}” -f ($objCluster.AssignedMemGB / $objCluster.TotalMemGB«»)
$objCluster.AssignedMemGB.Replace(' ', '')
# donne : 3 886,74
[/code:1]
la conversion ne fonctionne pas avec todecimal() ou autre !
c'est pourtant bien un string
j'ai testé en V2 au cas ou ce serait un bug v4 mais idem !
peut-être un problème de culture ?
et le remplace ne fonctionne pas non plus ????
pour info :
le code complet est accessible ici
le livre est ici et ensemble des sources sont là
Message édité par: 6ratgus, à: 14/01/16 15:23<br><br>Message édité par: 6ratgus, à: 14/01/16 15:24
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Que donne ceci :
[code:1]
[byte[]][char[]]$objCluster.AssignedMemGB
[/code:1]
Ou de formatage :
[code:1]$s=\"{0:n2}\" -f (3980024 / 1024)
[byte[]][char[]]$s[/code:1]
Renvoi 160 et pas 32
[code:1]
$S=[Math]::Round(3980024 / 1024,2)
[byte[]][char[]]$S[/code:1]
Renvoi un entier, plus de pb...<br><br>Message édité par: Laurent Dardenne, à: 14/01/16 15:44
Tutoriels PowerShell
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 .