Pas d'espace lors d'un retour chariot

Résolu
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

  1. Contributeur
    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
    1. Contributeur
      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
  2. 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
    1. Contributeur
      et l'espace est donc bien après la barre verticale?
      0
    2. Contributeur
      @yg_beou bien l'espace est après le passage à la ligne, en début de la ligne suivante?
      0
    3. Contributeur
      @yg_bemoi, pour comprendre ce qui se passe, je testerais ceci
      Foreach($AdIP in $AdresseIP){"a"}

      et cela
      Foreach($AdIP in $AdresseIP){"A`nB`n"}
      0
  3. Contributeur
    suggestion:
    $listip=""
    Foreach($IP in $AdresseIP){
    	$listip=$listip + "Adresse IP $($IP.InterfaceAlias): $($IP.IPAddress)`n"
    }
    $LabelAdresseIP.Text = $listip
    0
    1. 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
    2. Contributeur
      @blop135c'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
    3. @yg_beAh ok merci :)
      0
    4. Contributeur
      @blop135pourras-tu marquer la discussion comme résolue?
      0
    5. @yg_beOui pas de soucis, c'est fait.
      0