2017-04-13 2 views
1

Ich bin ein Powershell-Neuling und erstellt ein kleines Skript, um eine Liste von Laptops und Arbeitsstationen aus einer Textdatei zu importieren, sie anpingen, um zu sehen, ob sie in unserem Netzwerk sind und weiterhin zu überprüfen der Agentenstatus des Computers/config.Wenn Else-Anweisung mit String, Exportieren nach CSV

Wenn der Computer nicht online ist, möchte ich eine out-Dateien sagen, $ Workstation ist nicht online.

Das Problem, das ich hatte, ist, dass diese Fehler Zeichenfolge zu einer CSV mit den anderen Daten, ich kann IF und Else separat exportieren, aber es wäre schön, es in einer CSV wenn möglich zu haben.

Irgendwelche Gedanken? Vielen Dank!

$workstation=Get-content C:\Scripts\workstation.txt 

$forloop=ForEach ($workstation in $workstation) { 

     if (Test-Connection -ComputerName $workstation -Count 1 -Quiet) {Get-Service -ComputerName $workstation | where-object {$_.Name -eq 'xxx Agent'} | select displayname, name, starttype, status | 
     export-csv -Path C:\Scripts\therealdeal.c } 

     Else {Write-Output "$workstation not available Out"} 
     } 

$forloop | Out-File C:\scripts\output.csv 
+3

versuchen, in den Plural zu wechseln, um variable Verwirrung zu vermeiden?> '$ Workstations = Get-content' dann' ($ workstation in $ workstations) 'Nicht 100%, dass ich das Problem verstehe. –

Antwort

0

Ok, wenn es nach mir ginge würde ich testen, um zu sehen, was Arbeitsplätze sind online zuerst, dann berichten, was diejenigen offline sind, und um den Rest kümmern.

#Load workstations 
$workstations=Get-content C:\Scripts\workstation.txt 
#Find which ones are online 
[array]$OnlineWorkstations = Test-Connection -ComputerName $workstations -Count 1 -ea 4 |Select -Expand Address 
#If they are not all online generate a file listing which ones are offline 
If($workstations.count -gt $OnlineWorkstations.count){ 
    "Workstations not online:" | Set-Content C:\Scripts\Offline.txt 
    $workstations | Where{$_ -notin $OnlineWorkstations} | Add-Content C:\Scripts\Offline.txt 
} 
#Get data from online workstations 
$Results = ForEach ($workstation in $workstation) { 
     Get-Service -ComputerName $workstation | where-object {$_.Name -eq 'xxx Agent'} | select displayname, name, starttype, status 
} 
$Results | 
    export-csv -Path C:\Scripts\therealdeal.c 

Auch Ihr CSV-Dateiname scheint die 'sv' von der Erweiterung zu fehlen.

+0

Vielen Dank! Ich habe viel dafür gelernt. Es scheint, dass Sie die Anzahl der zwei Listen vergleichen und daraus zwei separate Listen erstellen – MrDoe