Pas d'espace lors d'un retour chariot

Résolu
blop135 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
blop135 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Je m'entraine sur Powershell en développant un petit script qui permet de récupérer les infos systèmes.
Jusqu'ici tout va bien sauf que quand je fais un retour chariot au niveau de l'affichage des addresses IP , addresses MAC et DNS il y a un petit espace avant chaque retour à la ligne et je ne comprends pas pourquoi.

Voici mon code:

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$NomUtilisateur = [System.Environment]::UserName
$NomPC = [System.Environment]::MachineName
$Ram = (Get-CimInstance Win32_Computersystem).TotalPhysicalMemory /1GB
$Ram = [Math]::Round($Ram)
$VersionSysteme = Get-CimInstance Win32_OperatingSystem | Select-Object Caption, BuildNumber, OSArchitecture
$AdresseIP = Get-NetIPAddress -InterfaceAlias "Ethernet*" -AddressFamily IPv4 | Select-Object InterfaceAlias, IPAddress
$AdresseMac = Get-NetAdapter -Name "Ethernet*" | Select-Object InterfaceAlias, MacAddress
$DNS = Get-DnsClientServerAddress -InterfaceAlias "Ethernet*" -AddressFamily IPv4 | Select-Object InterfaceAlias, ServerAddresses
$HardDrive = (Get-CimInstance Win32_DiskDrive) | Select-Object Caption, @{Name="Size(GB)"; Expression={"{0:N1}" -f($_.size/1gb)}}
$Model = Get-CimInstance Win32_Computersystem | Select-Object Manufacturer, Model
$SerialNumber = (Get-CimInstance Win32_BIOS).SerialNumber

$TailleTexte = New-Object System.Drawing.Font("Arial","10", [System.Drawing.FontStyle]::Bold)     
$Fenetre = New-Object System.Windows.Forms.Form                                                   


$Fenetre.Width = "800"
$Fenetre.Height = "500"
$Fenetre.Text = "Informations Systeme"
$Fenetre.MaximizeBox = $false

$LabelInfoSysteme = New-Object System.windows.Forms.Label
$LabelInfoSysteme.Location = New-Object System.Drawing.Point(10,10)
$LabelInfoSysteme.Autosize = $true
$Fenetre.Controls.Add($LabelInfoSysteme)
$LabelInfoSysteme.Text = "Informations Systeme"
$LabelInfoSysteme.Font = $TailleTexte

$LabelNomUtilisateur = New-Object System.Windows.Forms.Label
$LabelNomUtilisateur.Location = New-Object System.Drawing.Point(20,30)
$LabelNomUtilisateur.AutoSize = $true
$LabelNomUtilisateur.Text = "Nom d'utilisateur : $($NomUtilisateur)"
$Fenetre.Controls.Add($LabelNomUtilisateur)

$LabelNomPC = New-Object System.Windows.Forms.Label
$LabelNomPC.Location = New-Object System.Drawing.Point(20,50)
$LabelNomPC.AutoSize = $true
$LabelNomPC.Text = "Nom du PC : $($NomPC)"
$Fenetre.Controls.Add($LabelNomPC)

$LabelRam = New-Object System.Windows.Forms.Label
$LabelRam.Location = New-Object System.Drawing.Point(20,70)
$LabelRam.AutoSize = $true
$LabelRam.Text = "Ram Totale : $($Ram) GO"
$Fenetre.Controls.Add($LabelRam)

$LabelVersionSysteme = New-Object System.Windows.Forms.Label
$LabelVersionSysteme.Location = New-Object System.Drawing.Point(20,90)
$LabelVersionSysteme.AutoSize = $true
$LabelVersionSysteme.Text = "Version du systeme : $($VersionSysteme.Caption)", "$($VersionSysteme.OSArchitecture)" , "$($VersionSysteme.BuildNumber)"
$Fenetre.Controls.Add($LabelVersionSysteme)

$InfosReseau = New-Object System.Windows.Forms.Label
$InfosReseau.Location = New-Object System.Drawing.Point(10,110)
$InfosReseau.AutoSize = $true
$InfosReseau.Text = "Informations Reseau"
$InfosReseau.Font = $TailleTexte
$Fenetre.Controls.Add($InfosReseau)

$LabelAdresseIP = New-Object System.Windows.Forms.Label
$LabelAdresseIP.Location = New-Object System.Drawing.Point(20,130)
$LabelAdresseIP.AutoSize = $true
$LabelAdresseIP.Text = Foreach($AdresseIP in $AdresseIP){"Adresse IP $($AdresseIP.InterfaceAlias):","$($AdresseIP.IPAddress)`n"}
$Fenetre.Controls.Add($LabelAdresseIP)

$LabelAdresseMAC = New-Object System.Windows.Forms.Label
$LabelAdresseMAC.Location = New-Object System.Drawing.Point(20,170)
$LabelAdresseMAC.AutoSize = $true
$LabelAdresseMAC.Text = ForEach ($AdresseMac in $AdresseMac){"Adresse MAC $($AdresseMac.InterfaceAlias):","$($AdresseMac.MacAddress)`n"}
$Fenetre.Controls.Add($LabelAdresseMAC)

$LabelDNS = New-Object System.Windows.Forms.Label
$LabelDNS.Location = New-Object System.Drawing.Point(20,230)
$LabelDNS.AutoSize = $true
$LabelDNS.Text = ForEach($DNS in $DNS){"DNS $($DNS.InterfaceAlias)","$($DNS.ServerAddresses)`n"}
$Fenetre.Controls.Add($LabelDNS)

$DisquesDur = New-Object System.Windows.Forms.Label
$DisquesDur.Location = New-Object System.Drawing.Point(10,280)
$DisquesDur.AutoSize = $true
$DisquesDur.Text = "Disques dur"
$DisquesDur.Font = $TailleTexte
$Fenetre.Controls.Add($DisquesDur)

$LabelHardDriveSize = New-Object System.Windows.Forms.Label
$LabelHardDriveSize.Location = New-Object System.Drawing.Point(20,300)
$LabelHardDriveSize.AutoSize = $true
$LabelHardDriveSize.Text = ForEAch($HardDrive in $HardDrive){"$($HardDrive.Caption):","$($HardDrive.'Size(GB)') GO`n"}
$Fenetre.Controls.Add($LabelHardDriveSize)

$InfosPoste = New-Object System.Windows.Forms.Label
$InfosPoste.Location = New-Object System.Drawing.Point(10,370)
$InfosPoste.AutoSize = $true
$InfosPoste.Text = "Informations Poste"
$InfosPoste.Font = $TailleTexte
$Fenetre.Controls.Add($InfosPoste)

$LabelBrand = New-Object System.Windows.Forms.Label
$LabelBrand.Location = New-Object System.Drawing.Point(20,390)
$LabelBrand.AutoSize = $true
$LabelBrand.Text = "Marque : $($Model.Manufacturer)"
$Fenetre.Controls.Add($LabelBrand)

$LabelModel = New-Object System.Windows.Forms.Label
$LabelModel.Location = New-Object System.Drawing.Point(20,410)
$LabelModel.AutoSize = $true
$LabelModel.Text = "Modele : $($Model.Model)"
$Fenetre.Controls.Add($LabelModel)

$LabelSerialNumber = New-Object System.Windows.Forms.Label
$LabelSerialNumber.Location = New-Object System.Drawing.Point(20,430)
$LabelSerialNumber.AutoSize = $true
$LabelSerialNumber.Text = "Numero de serie : $($SerialNumber)"
$Fenetre.Controls.Add($LabelSerialNumber)

$Fenetre.ShowDialog()

J'ai également essayé avec `r puis `r`n mais c'est pareil hélas.

Merci d'avance :)


Message modifié par la modération
Pour une lecture plus facile du code, à l'avenir utilisez les balises, VOIR CETTE PAGE

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
il est préférable, avant de partager ton code ici, de le simplifier au maximum afin de nous montrer un petit code qui démontre le problème.
moi j'essaierais
$LabelAdresseIP.Text = Foreach($AdresseIP in $AdresseIP){"Adresse IP $($AdresseIP.InterfaceAlias):","$($AdresseIP.IPAddress)|`n"}

afin de déterminer où se trouve l'espace
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
en passant, je suis étonné du double usage du nom $AdresseIP. il me semble que d'habitude, on écrit plutôt ainsi:
$LabelAdresseIP.Text = Foreach($AdIP in $AdresseIP){"Adresse IP $($AdIP.InterfaceAlias):","$($AdIP.IPAddress)|`n"}
0
blop135 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Merci de ta réponse, alors j'ai fait ce que tu m'as dit mais comme je me doutais il me rajoute ça comme ça du coup:
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
et l'espace est donc bien après la barre verticale?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
ou bien l'espace est après le passage à la ligne, en début de la ligne suivante?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
moi, pour comprendre ce qui se passe, je testerais ceci
Foreach($AdIP in $AdresseIP){"a"}

et cela
Foreach($AdIP in $AdresseIP){"A`nB`n"}
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
suggestion:
$listip=""
Foreach($IP in $AdresseIP){
	$listip=$listip + "Adresse IP $($IP.InterfaceAlias): $($IP.IPAddress)`n"
}
$LabelAdresseIP.Text = $listip
0
blop135 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Effectivement ça fonctionne comme ça. Merci beaucoup.
Celà dit je comprends pas pourquoi ça ne fonctionne pas avec méthode, mystère ^^

Merci encore ;)
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > blop135 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
c'est tout simple, comme tu l'as vu en testant
Foreach($AdIP in $AdresseIP){"a"}

cette construction ajoute un espace à chaque tour de boucle.
et, pas de chance, cet espace ce retrouve en début de ligne, donc est très visible.
0
blop135 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Ah ok merci :)
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > blop135 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
pourras-tu marquer la discussion comme résolue?
0
blop135 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Oui pas de soucis, c'est fait.
0