2016-12-07 5 views
1

This thread hatte ich sehr gut begonnen, aber jetzt brauche ich mehr HilfePowershell - Variablen und foreach-Schleife

ich eine Schleife durch meine serverlist.txt Datei ist versucht, und die Ergebnisse von Get-EventLog an Out-Gridview-Pass und dann auf eine .csv-Datei. Ich habe das funktioniert, aber ich muss alle Datensätze im GridView-Fenster auswählen und dann für jeden Server auf OK klicken.

Also habe ich die Idee, dass ich eine $ sys-Variable außerhalb der Schleife erstellen möchte, gehen Sie in, hängen Sie die Ergebnisse an diese Variable für jeden Server an, und beenden Sie die Schleife und $ sys übergeben, um Grid-Ansicht .

Meine Verwirrung kommt regardinf Variablendeklaration, Typ, Anhänge und Platzierung im Code ...

Ich bin jetzt nur PS lernen, so kann dies für Sie ein wenig einfach sein :)

diese Code funktioniert ... müssen in der variablen Idee an den richtigen Stellen hinzuzufügen:

#Drop the existing files 
Remove-Item C:\system.csv 

# SERVER LIST PROPERTIES 
# Get computer list to check disk space. This is just a plain text file with the servers listed out. 
$computers = Get-Content "C:\ServerList.txt"; 

#Declare $sys here ?? 

# QUERY COMPUTER SYSTEM EVENT LOG 
foreach($computer in $computers) 

{   
if(Test-Connection $computer -Quiet -Count 1) 
     { 
    Try { 
     # $sys = 
     Get-EventLog -ComputerName $computer -LogName System -EntryType "Error","Warning" -After (Get-Date).Adddays(-7) ` 
     | Select-Object -Property machineName, EntryType, EventID, Source, TimeGenerated, Message ` 
     | Out-GridView -PassThru | Export-Csv C:\System.csv -NoTypeInformation -Append; 
     } 
    Catch 
     { 
     Write-Verbose "Error $($error[0]) encountered when attempting to get events from $computer" 
     } 
     } 
    else { 
     Write-Verbose "Failed to connect to $computer" 
     } 


} 
# $sys | Out-GridView....etc. 

Dank!

Kevin3NF

+1

add '$ sys = @()' außerhalb der Schleife (wie man wollte) – 4c74356b41

+1

und verwenden '$ sys + = Get-EventLog' hinzufügen Daten es –

+0

Ist die Rasteransicht erforderlich oder willst du einfach Dinge in eine CSV-Datei einfügen? –

Antwort

0

Nur diese heraus zu schließen, ich Vorschläge von mutiple Kommentare verwendet:

sys $ = @() (außerhalb der Schleife)

sys $ + = Get-EventLog (innen die Schleife)

$ sys | Export-Csv (nach der Schleife .csv zu senden)

ich gebloggt sogar die ganze Sache, einschließlich aller verschiedenen Iterationen des Lernens Ich ging durch: http://dallasdbas.com/getting-to-know-powershell-from-an-old-dba/

Vielen Dank an alle, die geholfen haben. Dies gab mir einen Rahmen, den ich weiterhin auf diesen Servern verwenden werde, wenn sich die Bedürfnisse ergeben.

Kevin3NF

Verwandte Themen