Pas d'espace lors d'un retour chariot [Résolu]

Signaler
Messages postés
14
Date d'inscription
jeudi 16 février 2017
Statut
Membre
Dernière intervention
13 janvier 2021
-
Messages postés
14
Date d'inscription
jeudi 16 février 2017
Statut
Membre
Dernière intervention
13 janvier 2021
-
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

Messages postés
13873
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 janvier 2021
780
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
Messages postés
13873
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 janvier 2021
780
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"}
Messages postés
14
Date d'inscription
jeudi 16 février 2017
Statut
Membre
Dernière intervention
13 janvier 2021

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:
Messages postés
13873
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 janvier 2021
780
et l'espace est donc bien après la barre verticale?
Messages postés
13873
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 janvier 2021
780 >
Messages postés
13873
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 janvier 2021

ou bien l'espace est après le passage à la ligne, en début de la ligne suivante?
Messages postés
13873
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 janvier 2021
780 >
Messages postés
13873
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 janvier 2021

moi, pour comprendre ce qui se passe, je testerais ceci
Foreach($AdIP in $AdresseIP){"a"}

et cela
Foreach($AdIP in $AdresseIP){"A`nB`n"}
Messages postés
13873
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 janvier 2021
780
suggestion:
$listip=""
Foreach($IP in $AdresseIP){
	$listip=$listip + "Adresse IP $($IP.InterfaceAlias): $($IP.IPAddress)`n"
}
$LabelAdresseIP.Text = $listip
Messages postés
14
Date d'inscription
jeudi 16 février 2017
Statut
Membre
Dernière intervention
13 janvier 2021

Effectivement ça fonctionne comme ça. Merci beaucoup.
Celà dit je comprends pas pourquoi ça ne fonctionne pas avec méthode, mystère ^^

Merci encore ;)
Messages postés
13873
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 janvier 2021
780 >
Messages postés
14
Date d'inscription
jeudi 16 février 2017
Statut
Membre
Dernière intervention
13 janvier 2021

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.
Messages postés
14
Date d'inscription
jeudi 16 février 2017
Statut
Membre
Dernière intervention
13 janvier 2021
>
Messages postés
13873
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 janvier 2021

Ah ok merci :)
Messages postés
13873
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 janvier 2021
780 >
Messages postés
14
Date d'inscription
jeudi 16 février 2017
Statut
Membre
Dernière intervention
13 janvier 2021

pourras-tu marquer la discussion comme résolue?
Messages postés
14
Date d'inscription
jeudi 16 février 2017
Statut
Membre
Dernière intervention
13 janvier 2021
>
Messages postés
13873
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 janvier 2021

Oui pas de soucis, c'est fait.