Collect Logfiles from all SP Farmservers

Da das Sammeln von ULS Logfiles innerhalb einer größeren Umgebung, immer wieder sehr mühsam sein kann habe ich nun ein Script geschrieben, welches alle Logfiles während eines Issues (beim Troubleshooten) sammelt und in ein log File schreibt.

Man kann aussuchen ob alle ULS Einträge währen des Troubleshootens gesammelt werden sollen, oder nur die Einträge einer bestimmten Correlation ID.

Merge-SPLogFile ist zwar nichts neues, aber mittels dieser Funktion wird einiges erleichtert.

Achtung: Dieses Script setzt das Logging Level während der Ausführung auf VERBOSEEX à dies kann (je nach dauer der Ausführung) schnell mehrere GB ins Log Verzeichnis der SharePoint Server schreiben.

Weiters sollte das Script natürlich vor Ausführung genau reviewed werden, da ich natürlich keine Gewährleistung auf dessen Funktion geben kann.

 

 

function
GET_ALL_LOGS_DURING_ISSUE {
cls
write-host
-fore
green
"Loading SharePoint Snapin"
Add-PSSnapin
-Name
Microsoft.SharePoint.PowerShell
–erroraction
SilentlyContinue
$name
=
read-host
"Short Error Description (=> Output Filename)"
$name
=
$name.Replace(" ","_")
$name
=
$name.Replace(".","_")
#.... and so on

$start
=
get-date
$actual_loglevel
=
get-sploglevel
#get actual loglevel before making changes
write-host
-fore
green "Set TraceServerity Level to VERBOSEEX"
set-sploglevel
-TraceSeverity
verboseex

read-host
"Reprocude the error and THEN Enter"

write-host
-fore
green
"Set TraceServerity Level to original Value"
$actual_loglevel
|
set-sploglevel
#reset the loglevel to the value before

$end
=
get-date
$filename
=
$env:temp
+
"\"
+$name +
".log"

$corr
=
$false
$x
=
$false
while ($x
-ne
$true)
{
write-host
"Is any correlation ID available? (No Input = NO)"
-fore
green

$CID
=
read-host
"Enter CorrID"

if ($CID.Length -eq
36)
#Dies ist ein sehr einfacher check, und kann natürlich bei Bedarf geändert werden :-)
{

$x=$true
$corr
=
$true
}

elseif ($CID.Length -eq
0)
{

$x=$true
$corr
=
$false
}

else
{

write-host
"Seems to be a wrong Correlation ID!"
-fore
red
}
}

write-host
-fore
green
"Start collecting LOGFiles"
if ($corr
-eq
$true)
{

Merge-SPLogFile
-Path
$filename
-StartTime
$start
-EndTime
$end
–Overwrite
-Correlation
$CID
}
else
{

Merge-SPLogFile
-Path
$filename
-StartTime
$start
-EndTime
$end
–Overwrite
}
return
"Logfile is located at: "
+
$filename

}