Con SharePoint 2010 e PowerShell è possibile visualizzate tutti gli eventi legati ad uno specifico Correlation ID
PowerShell
Get-SPLogEvent -StartTime (Get-Date).addminutes(-10) | ? {$_.correlation -eq "85da401e-9a3a-40a2-a8e6-6fcd0e88b969"} | select timestamp, level, message |  format-list 
Se si vuole fare la stessa cosa su una cartella di un altro server della farm
PowerShell
Get-SPLogEvent -StartTime (Get-Date).addminutes(-10) -directory "\\sharepointServer\d$\LogFiles\Tracelogs"  | ? {$_.area -like "*excel*"} | select timestamp, level, message | Format-List
In questo caso estraggo dai log del server remoto tutti gli eventi degli ultimi 10 minuti con l'area che contiene "excel".

Si può anche creare una funzione:
PowerShell
function Get-SCorrelationId ([string]$cid)
{
  Get-SPLogEvent -StartTime (Get-Date).addminutes(-10) | ? {$_.correlation -eq $cid} | select timestamp, level, message |  format-list 
}
da richiamare con:
PowerShell
.\Get-SCorrelationId 85da401e-9a3a-40a2-a8e6-6fcd0e88b969

Una versione più evoluta è questa:
PowerShell
#Add-PSSnapin "Microsoft.SharePoint.PowerShell"
#example: Get-SCorrelationId 174b0bcf-cdc9-460a-81ce-a73a37bb2ef1 -full
Function Get-SCorrelationId {
  Param(
    [parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true)] 
    [String] $CorrelationID,

    [parameter(Mandatory=$false, Position=1)]
    [switch] $Today,

    [parameter(Mandatory=$false, Position=2)]
    [switch] $Full
  )

  if($Today){
    $dt = (Get-Date).Date;
  }else{
    $dt =  (Get-Date).addminutes(-15);
  }
  Write-Host "Searching for '$CorrelationID', from date '$dt' ..."
  if($Full) {
    Get-SPLogEvent -StartTime $dt | ? {$_.correlation -eq $CorrelationID} | format-list
  } else {
    Get-SPLogEvent -StartTime $dt | ? {$_.correlation -eq $CorrelationID} | select timestamp, level, message |  format-list
  }
}
dove il parametro "Today" permette di cercare dall'inizio della giornata, mentre con "full" ritorna tutti i dati presenti:
PowerShell
.\Get-SCorrelationId 85da401e-9a3a-40a2-a8e6-6fcd0e88b969 -Today -Full
Per aggiungerla al proprio profilo powershell:
PowerShell
#add to profile
$sgart_fn = "Get-SCorrelationId"
$sgart_fnTest = "Function Get-SCorrelationId"
if((Test-Path $PROFILE) -eq $false){
    write-host "create profile: $PROFILE"
    New-Item -path $PROFILE -type file -force
}
if( (Get-Content $PROFILE | ?{ $_ -cLike "*$sgart_fnTest *"}) -eq $null ) {
    write-host "Add function  to $PROFILE"
    $f = (Get-Command Get-SCorrelationId -ParameterName "Today" -ErrorAction SilentlyContinue);
    if($f -eq $null){
        Write-Host "$sgart_fnTest NOT FOUND";
    }else{
        Add-Content $profile "`r`n`r`n$sgart_fnTest { $($f.ScriptBlock) }";
        Get-Content $PROFILE
    }
}
Potrebbe interessarti anche: