2016-10-14 9 views
1

Meine foreach-Schleife fügen alle Inhaltsprotokolle zu einer einzelnen Zeile hinzu. Wie beheben Sie das Hinzufügen von Inhalt zum Index?Wie foreach loop fixieren

$FilterHashTable = @{logname='Application'; providername='Microsoft-Windows- SoftwareRestrictionPolicies'; StartTime=$StartTime}; 
$test = Invoke-Command -ScriptBlock {param ($FilterHashTable) Get-WinEvent -FilterHashtable $FilterHashTable} -ArgumentList $FilterHashTable -ComputerName 491-517 | 
Select-Object PSComputerName, TimeCreated, Message 

foreach ($id in $test) 
{ 
$PSComputerName = $test.PSComputerName 
$TimeCreated = $test.TimeCreated 
$Message = $test.Message 

Add-Content $logFile "$PSComputerName, $TimeCreated, $Message" 
} 
+0

Was meinen Sie 'Inhalt zum Index hinzufügen'? –

+0

Hmmm ich habe alle Protokolle in einer Zeile. Ich muss es so machen wie viele Logs wie viele Zeilen. Ich kann nicht erklären. Nicht wie diese cpu1, cpu1 | Zeit, Zeit | Nachricht aber Nachricht cpu1, Zeit, Nachricht CPU1, Zeit, Nachricht CPU2, Zeit, Nachricht – cinq2

Antwort

1

einen Blick dort nehmen: http://ss64.com/ps/foreach.html

$id die das nächste Element in der Liste ist, beziehen sich auf $id statt $test

Versuchen Sie, diese

foreach ($id in $test) 
{ 

$PSComputerName = $id.PSComputerName 
$TimeCreated = $id.TimeCreated 
$Message = $id.Message 

Add-Content $logFile "$PSComputerName, $TimeCreated, $Message" 
} 
+0

das ist was ich ment. Vielen Dank ! – cinq2

+0

Kein Problem Kumpel –