Question [Résolu] Probleme interface couleur textbox

Plus d'informations
il y a 9 ans 2 mois #23326 par flavien
Bonjour,

Mon script fonctionne correctement par contre j'ai un problème au niveau de la coloration de mes textbox.

En effet, je désire comparer le contenu des valeurs entre elles, afin que visuelement je puisse constater directement les inégalités.

En gros vert, quand le contenu des deux textbox sont égales et rouges, si jamais il y a une différence.

Je constate qu'en exécutant le script sans l'ISE mes textbox restent verte, alors qu'avec l'iSE elle passe en rouge si besoin.(Une textbox, c'elle pour la taille du disque ne change pas systématiquement...) d'où mon problème.

De plus est-il possible de comparer une valeur d'une textbox par une plage?

(Exemple: Si la taille du disque est à moins de 30Go près que c'elle de la valeur dans l'autre textbox, elle se met en vert; alors que si la difference est de +30 la textbox se mettra en rouge.)

Voici le code:

[code:1]
Add-Type -AssemblyName PresentationFramework, PresentationCore, WindowsBase

[xml]$XAML =@'
<Window

xmlns=\"schemas.microsoft.com/winfx/2006/xaml/presentation\";
xmlns:«»x=\"schemas.microsoft.com/winfx/2006/xaml\";
Title=\"MainWindow\" Height=\"555\" Width=\"854\">
<Grid>
<Label Content=\"Verification matériel pc\" Height=\"32\" HorizontalAlignment=\"Left\" Margin=\"330,0,0,0\" Name=\"Label1\" VerticalAlignment=\"Top\" Width=\"184\" FontSize=\"14\" FontWeight=\"Bold\" FontStyle=\"Normal\" />
<Label Content=\"Designation\" Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"47,142,0,0\" Name=\"LBL_DESIGNATION_1\" VerticalAlignment=\"Top\" Width=\"112\" />
<TextBox Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"165,142,0,0\" Name=\"TXT_DESIGNATION_1\" VerticalAlignment=\"Top\" Width=\"209\" />
<Label Content=\"Model\" Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"47,184,0,0\" Name=\"LBL_MODELE_1\" VerticalAlignment=\"Top\" Width=\"112\" />
<TextBox Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"165,184,0,0\" Name=\"TXT_MODEL_1\" VerticalAlignment=\"Top\" Width=\"209\" />
<Label Content=\"Serial Number\" Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"47,226,0,0\" Name=\"LBL_SERIALNUMBER_1\" VerticalAlignment=\"Top\" Width=\"112\" />
<TextBox Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"165,226,0,0\" Name=\"TXT_SERIALNUMBER_1\" VerticalAlignment=\"Top\" Width=\"209\" />
<Label Content=\"Asset tag\" Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"12,75,0,0\" Name=\"LBL_ASSETTAG_1\" VerticalAlignment=\"Top\" Width=\"63\" />
<TextBox Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"74,77,0,0\" Name=\"TXT_ASSETTAG_1\" VerticalAlignment=\"Top\" Width=\"170\" />
<Label Content=\"Hostname\" Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"245,75,0,0\" Name=\"LBL_HOSTNAME_1\" VerticalAlignment=\"Top\" Width=\"85\" />
<TextBox Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"313,77,0,0\" Name=\"TXT_HOSTNAME_1\" VerticalAlignment=\"Top\" Width=\"209\" />
<Label Content=\"Processor\" Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"47,268,0,0\" Name=\"LBL_PROCESSOR_1\" VerticalAlignment=\"Top\" Width=\"112\" />
<TextBox Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"165,268,0,0\" Name=\"TXT_PROCESSOR_1\" VerticalAlignment=\"Top\" Width=\"209\" />
<Label Content=\"RAM\" Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"47,310,0,0\" Name=\"LBL_RAM_1\" VerticalAlignment=\"Top\" Width=\"112\" />
<TextBox Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"165,310,0,0\" Name=\"TXT_RAM_1\" VerticalAlignment=\"Top\" Width=\"209\" />
<Label Content=\"Hard Disk\" Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"47,352,0,0\" Name=\"LBL_HARDDISK_1\" VerticalAlignment=\"Top\" Width=\"112\" />
<Label Content=\"MAC Address\" Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"524,75,0,0\" Name=\"LBL_MACADRESS_1\" VerticalAlignment=\"Top\" Width=\"85\" />
<TextBox Height=\"25\" HorizontalAlignment=\"Right\" Margin=\"0,77,22,0\" Name=\"TXT_MACADRESS_1\" VerticalAlignment=\"Top\" Width=\"209\" />
<TextBox Height=\"68\" HorizontalAlignment=\"Left\" Margin=\"165,352,0,0\" Name=\"TXT_HARDDISK_1\" VerticalAlignment=\"Top\" Width=\"209\" />
<Label Content=\"Designation\" Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"447,142,0,0\" Name=\"LBL_DESIGNATION_2\" VerticalAlignment=\"Top\" Width=\"112\" />
<TextBox Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"565,142,0,0\" Name=\"TXT_DESIGNATION_2\" VerticalAlignment=\"Top\" Width=\"209\" />
<Label Content=\"Model\" Height=\"25\" HorizontalAlignment=\"Right\" Margin=\"0,184,273,0\" Name=\"LBL_MODEL_2\" VerticalAlignment=\"Top\" Width=\"112\" />
<TextBox Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"565,184,0,0\" Name=\"TXT_MODEL_2\" VerticalAlignment=\"Top\" Width=\"209\" />
<Label Content=\"Processor\" Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"447,268,0,0\" Name=\"LBL_PROCESSOR2\" VerticalAlignment=\"Top\" Width=\"112\" />
<TextBox Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"565,268,0,0\" Name=\"TXT_PROCESSOR_2\" VerticalAlignment=\"Top\" Width=\"209\" />
<Label Content=\"RAM\" Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"447,310,0,0\" Name=\"LBL_RAM_2\" VerticalAlignment=\"Top\" Width=\"112\" />
<TextBox Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"565,310,0,0\" Name=\"TXT_RAM_2\" VerticalAlignment=\"Top\" Width=\"209\" />
<Label Content=\"Hard Disk\" Height=\"25\" HorizontalAlignment=\"Left\" Margin=\"447,352,0,0\" Name=\"LBL_HARDDISK_2\" VerticalAlignment=\"Top\" Width=\"112\" />
<TextBox Height=\"68\" HorizontalAlignment=\"Left\" Margin=\"565,352,0,0\" Name=\"TXT_HARDDISK_2\" VerticalAlignment=\"Top\" Width=\"209\" />
<GroupBox Header=\"Actual configuration\" Height=\"325\" HorizontalAlignment=\"Left\" Margin=\"35,119,0,0\" Name=\"GroupBox1\" VerticalAlignment=\"Top\" Width=\"367\">
<Grid></Grid>
</GroupBox>
<GroupBox Header=\"Basic configuration\" Height=\"325\" HorizontalAlignment=\"Left\" Margin=\"433,119,0,0\" VerticalAlignment=\"Top\" Width=\"367\" Name=\"GroupBox2\">
<Grid />
</GroupBox>
<Button Content=\"Save \" Height=\"31\" HorizontalAlignment=\"Left\" Margin=\"192,463,0,0\" Name=\"BTN_SAVE\" VerticalAlignment=\"Top\" Width=\"138\" />
<Button Content=\"Quitter\" Height=\"31\" HorizontalAlignment=\"Right\" Margin=\"0,463,176,0\" Name=\"BTN_QUITTER\" VerticalAlignment=\"Top\" Width=\"138\" />
</Grid>
</Window>
'@

$reader = New-Object System.Xml.XmlNodeReader $XAML
$Form = [Windows.Markup.XamlReader]::Load($reader)

#region Declaration des variables pour les commandes

$vModel1 = (Get-WmiObject win32_computersystemproduct).name ## nom du modèle
$vDate = get-date -format d
$vProduct_ID = $model1
$vComputerName2 = (Get-WmiObject win32_computersystemproduct).version ## designation
$vSerialNumber1 = (Get-WmiObject win32_computersystemproduct).identifyingNumber
$vMacadress1 = (Get-WmiObject Win32_NetworkAdapter | ? {$_.Manufacturer -notmatch \"Bluetooth\"} | ? {$_.NetConnectionID -match \"local\"} ).MACAddress
$vAssetTag = (Get-WmiObject -Class Win32_SystemEnclosure | Select-Object SMBiosAssetTag).SMBiosAssetTag
$vRam = (get-wmiobject -class Win32_PhysicalMemory).capacity /1024 /1024

$vProcessor1 = ( Get-WmiObject Win32_Processor).maxclockspeed /1000
$vProcessorArrondi1 = [math]::Round($vProcessor1,1) ## Arrondi 1 chiffre après la virgule

$vHardisk1 = (Get-WmiObject Win32_logicaldisk | ? {$_.Deviceid -match \"C|D|E\"})
$vHardisk1_1 = $vHardisk1.size / 1GB ##conversion taille disque
$vHardisk1_1_1 = [math]::Round($vHardisk1_1,2)

##recuperation de certaines lettres pour le Hostname
$vLettre1 = 'L'
$vLettre2 = $vmodel1.substring(7,3)
$hostname = $vLettre1+$vLettre2+$vLettre3+$vSerialNumber1

#endregion

#region Declaration des Variables 3 Premieres Textbox

$Textbox_Hostname_1 = $form.findname('TXT_HOSTNAME_1')
$Textbox_AssetTag_1 = $form.findname('TXT_ASSETTAG_1')
$Textbox_SerialNumber_1 = $form.findname('TXT_SERIALNUMBER_1')
$Textbox_MacAdress_1 = $form.findname('TXT_MACADRESS_1')
#endregion

#region Declaration Interface Quitter et Save
$btn_quitter = $form.findname('BTN_QUITTER')
$btn_quitter.add_click({ $Form.close() })

$btn_save = $form.findname('BTN_SAVE')
$btn_save.add_click({
$vobjtab1 | export-csv -append $env:USERPROFILE\Desktop\extracttest.csv
})

#endregion

#region test couleur textbox si ok

#check textbox designation
if ($vComputerName2 -ge $Textbox_Designation_2.text)
{
$form.Findname('TXT_DESIGNATION_2').Background = 'Green'
$form.Findname('TXT_DESIGNATION_1').Background = 'Green'
}
Else
{
$form.Findname('TXT_DESIGNATION_2').Background = 'Red'
$form.Findname('TXT_DESIGNATION_1').Background = 'Red'
}

#textbox Model
if ($vModel1 -ge $Textbox_MODEL_2.text)
{
$form.findname('TXT_MODEL_1').Background = 'Green'
$form.findname('TXT_MODEL_2').Background = 'Green'
}
Else
{
$form.findname('TXT_MODEL_1').Background = 'Red'
$form.findname('TXT_MODEL_2').Background = 'Red'
}

#textbox processor

if ($vProcessorArrondi1 -ge $Textbox_Processor_2.text)
{
$form.findname('TXT_PROCESSOR_1').Background = 'Green'
$form.findname('TXT_PROCESSOR_2').Background = 'Green'
}
Else
{
$form.findname('TXT_PROCESSOR_1').Background = 'Red'
$form.findname('TXT_PROCESSOR_2').Background = 'Red'
}

#textbox Ram

if ($vRam -ge $Textbox_Ram_1.text)
{
$form.findname('TXT_RAM_1').Background = 'Green'
$form.findname('TXT_RAM_2').Background = 'Green'
}
Else
{
$form.findname('TXT_RAM_1').Background = 'Red'
$form.findname('TXT_RAM_2').Background = 'Red'
}

#textbox disk
if ($vHardisk1_1_1 -ge $Textbox_HardDisk_2.text)
{
$form.findname('TXT_HARDDISK_1').Background = 'Green'
$form.findname('TXT_HARDDISK_2').Background = 'Green'
}
Else
{
$form.findname('TXT_HARDDISK_1').Background = 'Red'
$form.findname('TXT_HARDDISK_2').Background = 'Red'
}

#endregion

#region Interface colonne Basic Configuration
$Textbox_Designation_1 = $form.Findname('TXT_DESIGNATION_1')
$Textbox_Model_1 = $form.findname('TXT_MODEL_1')
$Textbox_Processor_1 = $form.findname('TXT_PROCESSOR_1')
$Textbox_Ram_1 = $form.findname('TXT_RAM_1')
$Textbox_HardDisk_1 = $form.findname('TXT_HARDDISK_1')
#endregion

#region Interface colonne Actual Configuration
$Textbox_Designation_2 = $form.Findname('TXT_DESIGNATION_2')
$Textbox_Model_2 = $form.findname('TXT_MODEL_2')
$Textbox_Processor_2 = $form.findname('TXT_PROCESSOR_2')
$Textbox_Ram_2 = $form.findname('TXT_RAM_2')
$Textbox_HardDisk_2 = $form.findname('TXT_HARDDISK_2')

$Textbox_Hostname_1.text = $hostname
$Textbox_MacAdress_1.text = $vMacadress1
$Textbox_Designation_1.text = $vComputerName2
$Textbox_Model_1.text = $vModel1
$Textbox_SerialNumber_1.text = $vSerialNumber1
$Textbox_AssetTag_1.text = $vAssetTag
$Textbox_Ram_1.text = $vRam
$Textbox_Processor_1.text = $vProcessorArrondi1
$Textbox_HardDisk_1.text = $vHardisk1_1_1
#endregion

#region

#Decla tableau test

$vtab3= [string]'20FMS1GX08',[string]'Thinkpad T460',[double]2.9,[int]10000,[int]256

$vobjtab1 = [PScustomObject] @{
'Date' = $vDate ;
'Asset Tag' = $vAssetTag ;
'Mac Adress' = $vMacadress1 ;
'Designation' = $vComputerName2 ;
'Modele' = $vModel1 ;
'Serial Number' = $vSerialNumber1 ;
'Processeur' = $vProcessorArrondi1 ;
'Ram' = $vRam ;
'Disque dur' = $vHardisk1_1_1}

$vT460_1 = '20FMS1GX08'
if ($vModel1 -eq $vT460_1)
{
$vLettre3 = 'L'
$Textbox_Model_2.text = $vTab3[0]
$Textbox_Designation_2.text = $vtab3[1]
$Textbox_Processor_2.text = $vtab3[2]
$textbox_ram_2.text = $vtab3[3]
$Textbox_HardDisk_2.text = $vtab3[4]
}

#endregion

$Form.showdialog() | Out-Null[/code:1]

Merci d'avance.

Message édité par: flav631, à: 17/03/17 09:45

Message édité par: Arnaud, à: 17/03/17 15:21<br><br>Message édité par: Arnaud, à: 21/03/17 16:41

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

Plus d'informations
il y a 9 ans 2 mois #23330 par Arnaud Petitjean
Bonjour Flav,

Je constate qu'en exécutant le script sans l'ISE mes textbox restent verte, alors qu'avec l'ISE elle passe en rouge si besoin, d'où mon problème.


N'oublie pas que lorsque ton script sera exécuté, il le sera via Powershell.exe (console). Donc la console PowerShell doit être ta référence. Personnellement je n'ai pas trop confiance à ISE pour l'exécution des scripts et je les teste systématiquement dans la console. En gros je me sers d'ISE uniquement comme éditeur. Je te recommande d'en faire autant car parfois on a des surprises avec ISE...

En effet, je désire comparer le contenu des valeurs entre elles, afin que visuellement je puisse constater directement les inégalités.

Il n'y a rien de bien compliqué ici. Tu récupères les valeurs des TextBox et tu les compares entre elles.

Dernière chose : lorsque tu publies du code dans le forum, n'oublie pas de le mettre dans une balise \&quot;Code\&quot; entre crochets pour qu'il s'affiche correctement.

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 9 ans 2 mois #23331 par flavien
Pas de soucis pour le code.

Ok, je vais privilégier la console dans ce cas.

Par contre pour la comparaison des valeurs dans les textbox, aucun soucis c'est plus au niveau des changements de couleurs des textbox suivant la compairaison qui ne s'éffectue pas.

Je vais essayer de tester avec un bouton pour voir si ça change quelque chose.

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

Plus d'informations
il y a 9 ans 2 mois #23344 par flavien
Pour les couleurs textbox c'est bon. Par contre j'ai un soucis concernant la comparaison de deux textbox.

En faite j'aimerais comparer mes textbox1 et 2 (taille du disque). Dans mon cas lorsque j'éxécute les commandes suivantes

[code:1] $vHardisk1 = (Get-WmiObject Win32_logicaldisk | ? {$_.Deviceid -match \&quot;C|D|E\&quot;})
$vHardisk1_1 = $vHardisk1.size / 1GB
$vHardisk1_1_1 = [math]::Round($vHardisk1_1,2)[/code:1]

Le soucis c'est que dans mon exemple, j'obtiens 237Go pour une taille de 256Go donner par le constructeur.

Du coup comment pourrais-je faire pour comparer mes deux textbox en disant par exemple que si mon nombre de la textbox1 (237Go) est compris entre 220 et 280Go est ok?

J'espère avoir était claire :D

Merci d'avance.

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

Plus d'informations
il y a 9 ans 2 mois #23345 par flavien
J'ai trouver une solution, certainement pas la meilleur mais elle fonctionne. J'ai creer différentes variables et un tableau si quelqu'un à une autre méthode je suis preneur.

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

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