Question
Remplacer q'une seul valeur d'une ligne d'un CSV
- Ome
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 23
- Remerciements reçus 0
il y a 4 ans 2 mois #29623
par Ome
Remplacer q'une seul valeur d'une ligne d'un CSV a été créé par Ome
Bonjour,
Mon script fait des pings et remonte tout un tas d'information dans un csv.
Ce que j'aimerais c'est que quand il ne ping pas ça soit marquer Down et surtout que ça laisse les anciennes valeurs sur la ligne.
J'arrive à faire le Down mais le problème c'est qu'il m'efface toute la ligne.
[code:1]####################### PATH FILES ###################################
$path = \"C:\Users\tmansuy\OneDrive - CRISTAL UNION\Documents\Infra\IPAM 2019\test.csv\"
$machines = gc \"C:\Users\tmansuy\OneDrive - CRISTAL UNION\Documents\Infra\IPAM 2019\machinelist.txt\"
######### CORPSE ####
$csvImport = Import-Csv \"C:\Users\tmansuy\OneDrive - CRISTAL UNION\Documents\Infra\IPAM 2019\test.csv\"
$count = $machines.count
$a=$null
$machines | foreach-object{
$ping=$null
$hname =$null
$machine = $_
write-host $machine
$ping = Test-Connection $machine -Count 1 -quiet -ea silentlycontinue
ForEach ($item in \"test.csv\"«»){
if($ping -eq $false){
$ligne=$machine+\";DOWN;\"
}
else {
$Mfg = Get-WmiObject -ComputerName $machine -Class Win32_ComputerSystem -EA 0
$ping = Test-Connection $machine -Count 1 -ea silentlycontinue
$hname = [System.Net.Dns]::GetHostByAddress($machine).HostName
$MACs = (Get-WmiObject -ComputerName $hname -Class \"Win32_NetworkAdapterConfiguration\" -EA 0 | Where { $_.IPAddress -eq $machine }).MACAddress
$Date = Get-Date -Format \"dd/MM/yyyy HH:mm\"
$Model = $Mfg.model
$Manufacturer = $Mfg.Manufacturer
$hname=$hname.Split(\".\"«»)[0]
$ligne=$machine+\";UP;\"+$Date+\";\"+$hname+\";\"+$Manufacturer+\";\"+$Model+\";\"+$MACs
}
$a+=[Array]$ligne
}}
####################### REMOVE OLD FILE ###################################
Remove-Item ($path)
######### OUT FILE ####
$a | out-file \"$path\"[/code:1]<br><br>Message édité par: Ome, à: 20/01/20 10:19
Mon script fait des pings et remonte tout un tas d'information dans un csv.
Ce que j'aimerais c'est que quand il ne ping pas ça soit marquer Down et surtout que ça laisse les anciennes valeurs sur la ligne.
J'arrive à faire le Down mais le problème c'est qu'il m'efface toute la ligne.
[code:1]####################### PATH FILES ###################################
$path = \"C:\Users\tmansuy\OneDrive - CRISTAL UNION\Documents\Infra\IPAM 2019\test.csv\"
$machines = gc \"C:\Users\tmansuy\OneDrive - CRISTAL UNION\Documents\Infra\IPAM 2019\machinelist.txt\"
######### CORPSE ####
$csvImport = Import-Csv \"C:\Users\tmansuy\OneDrive - CRISTAL UNION\Documents\Infra\IPAM 2019\test.csv\"
$count = $machines.count
$a=$null
$machines | foreach-object{
$ping=$null
$hname =$null
$machine = $_
write-host $machine
$ping = Test-Connection $machine -Count 1 -quiet -ea silentlycontinue
ForEach ($item in \"test.csv\"«»){
if($ping -eq $false){
$ligne=$machine+\";DOWN;\"
}
else {
$Mfg = Get-WmiObject -ComputerName $machine -Class Win32_ComputerSystem -EA 0
$ping = Test-Connection $machine -Count 1 -ea silentlycontinue
$hname = [System.Net.Dns]::GetHostByAddress($machine).HostName
$MACs = (Get-WmiObject -ComputerName $hname -Class \"Win32_NetworkAdapterConfiguration\" -EA 0 | Where { $_.IPAddress -eq $machine }).MACAddress
$Date = Get-Date -Format \"dd/MM/yyyy HH:mm\"
$Model = $Mfg.model
$Manufacturer = $Mfg.Manufacturer
$hname=$hname.Split(\".\"«»)[0]
$ligne=$machine+\";UP;\"+$Date+\";\"+$hname+\";\"+$Manufacturer+\";\"+$Model+\";\"+$MACs
}
$a+=[Array]$ligne
}}
####################### REMOVE OLD FILE ###################################
Remove-Item ($path)
######### OUT FILE ####
$a | out-file \"$path\"[/code:1]<br><br>Message édité par: Ome, à: 20/01/20 10:19
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Troxsa
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 30
- Remerciements reçus 0
il y a 4 ans 2 mois #29632
par Troxsa
Réponse de Troxsa sur le sujet Re:Remplacer q'une seul valeur d'une ligne d'un CSV
Bonjour,
Je vous conseille de faire un job pour faire votre ping
cela pourra être exécuter en asynchrone ça sera plus rapide
[code:1]$ComputersPing = Test-Connection -ComputerName (Get-Content \".\machines.txt\"«») -Delay 5 -Count 1 -ThrottleLimit 50 -ErrorAction SilentlyContinue -AsJob | Wait-Job | Receive-Job
$ComputersPing | Add-Member -NotePropertyName DateTime -NotePropertyValue (Get-Date).DateTime
$PingOK = $ComputersPing | Sort-Object ResponseTime -Descending | Where-Object ResponseTime -NE $null
$PingKO = $ComputersPing | Sort-Object ResponseTime -Descending | Where-Object ResponseTime -EQ $null
Write-Host \"
\"
Write-Host \" PING OK \"
Write-Host \"
\"
$ResultatOK = $PingOK | Select DateTime, Address
$ResultatOK | Export-Csv .\Ping.csv -Encoding Default -Append -NoTypeInformation
Write-Host \"
\"
Write-Host \" PING KO \"
Write-Host \"
\"
$ResultatKO = $PingKO | Select DateTime, Address
$ResultatKO | Export-Csv .\Ping.csv -Encoding Default -Append -NoTypeInformation[/code:1]
Je vous conseille de faire un job pour faire votre ping
cela pourra être exécuter en asynchrone ça sera plus rapide
[code:1]$ComputersPing = Test-Connection -ComputerName (Get-Content \".\machines.txt\"«») -Delay 5 -Count 1 -ThrottleLimit 50 -ErrorAction SilentlyContinue -AsJob | Wait-Job | Receive-Job
$ComputersPing | Add-Member -NotePropertyName DateTime -NotePropertyValue (Get-Date).DateTime
$PingOK = $ComputersPing | Sort-Object ResponseTime -Descending | Where-Object ResponseTime -NE $null
$PingKO = $ComputersPing | Sort-Object ResponseTime -Descending | Where-Object ResponseTime -EQ $null
Write-Host \"
\"
Write-Host \" PING OK \"
Write-Host \"
\"
$ResultatOK = $PingOK | Select DateTime, Address
$ResultatOK | Export-Csv .\Ping.csv -Encoding Default -Append -NoTypeInformation
Write-Host \"
\"
Write-Host \" PING KO \"
Write-Host \"
\"
$ResultatKO = $PingKO | Select DateTime, Address
$ResultatKO | Export-Csv .\Ping.csv -Encoding Default -Append -NoTypeInformation[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Ome
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 23
- Remerciements reçus 0
il y a 4 ans 2 mois #29641
par Ome
Réponse de Ome sur le sujet Re:Remplacer q'une seul valeur d'une ligne d'un CSV
Merci mais j'ai trouver la solution.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.078 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Remplacer q'une seul valeur d'une ligne d'un CSV