Thursday, November 19, 2015

Run Manual scan to Clean up Virus flag on Symantec Protection for SharePoint Server farm

If SPSS service was detected down and SharePoint pages, files has been marked as unsafe during its outage. How to remove that, please follow below methods to quickly remove virus flag(VirusStatus=6 in Content database)from it:

1: Using SPDesigner:its helpful if less pages are marked as virus.

When the virus status is set to 6 (e.g. Select * from alldocs (nolock) where VirusStatus=6), you could resolve it by following the below steps.

  1. Open the SharePoint site in SharePoint designer.
  2. Do a check-in and check-out of the affected aspx pages.
  3. Publish a major version.
  4. The article provided by Symantec team https://support.symantec.com/en_US/article.TECH93375.html is followed.


2: Run Manual Scan : If many documents are impacted. Remember if you want to skip any particular file type extensions from scanning, then Open the Registry Editor and browse to the path “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\AVScanner”.   Create a new “String Value” with the following name: “SkipExtensionsNoScanner”. Set the value of the new key “SkipExtensionsNoScanner” to “.aspx;.asmx”.

3. In bulk, Use Powershell script to check-in/checkout of all the documents forcefully in a document library
$listname = "test"
$url = "http://sp"

function approveContent ($w, $listName) {
  $list = $w.Lists |? {$_.Title -eq $listName}
  foreach ($item in $list.Items)
  {
       
        if(($item -ne $null) -and ($item.LockId -ne $null)) {
      $item.ReleaseLock($item.LockId)
    }
    if( $item.File -ne $null) { $itemFile = $list.GetItemById($item.ID).File }
    else { $itemFile = $list.GetItemById($item.ID) }
   
    if( $itemFile.CheckOutStatus -ne "None" ) {
      $itemFile.CheckIn("Automatic CheckIn. (Administrator)")
      if( $item.File -ne $null) { $itemFile = $list.GetItemById($item.ID).File }
      else { $itemFile = $list.GetItemById($item.ID) }
    }

   
  }
}

$site = Get-SPSite $url
foreach ( $web in $site.AllWebs )
{
approveContent $web $listname
}
Write-Output "OK"