Question Remplacer q'une seul valeur d'une ligne d'un CSV

Plus d'informations
il y a 4 ans 2 mois #29623 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 \&quot;$path\&quot;[/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.

Plus d'informations
il y a 4 ans 2 mois #29632 par Troxsa
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 \&quot;.\machines.txt\&quot;«») -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 \&quot;
\&quot;
Write-Host \&quot; PING OK \&quot;
Write-Host \&quot;
\&quot;
$ResultatOK = $PingOK | Select DateTime, Address
$ResultatOK | Export-Csv .\Ping.csv -Encoding Default -Append -NoTypeInformation

Write-Host \&quot;
\&quot;
Write-Host \&quot; PING KO \&quot;
Write-Host \&quot;
\&quot;
$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.

Plus d'informations
il y a 4 ans 2 mois #29641 par Ome
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
Propulsé par Kunena