Lo script PowerShell seguente permette di estrarre dal DB di SharePoint 2003 (WSS2 - Portal) un documento non accessibile dall'interfaccia web ma ancora presente sul DB di contenuto.

Per funzionare richiede di impostare la connection string, il nome del file con cui verra salvato e l'id del documento della tabella docs.
PowerShell: SPDownloadFileFromDB.ps1
# se non funge lanciare prima da linea di comando
# powershell Set-ExecutionPolicy RemoteSigned
# eseguire con: powershell .\SPDownloadFileFromDB.ps1 

#estrae un documento dal DB di share point 2003e lo salva in un file

[void][System.Reflection.Assembly]::LoadWithPartialName(”Microsoft.SharePoint”) 
[void][System.Reflection.Assembly]::LoadWithPartialName(”System.IO”) 
[void][System.Reflection.Assembly]::LoadWithPartialName(”System.Data”) 
[void][System.Reflection.Assembly]::LoadWithPartialName(”System.Data.SqlClient”) 

######################################
#parametri di funzionamento da aggiornare
# connection string al db di content di SP2003
$cnnString = "Data Source=<serverName>;Initial Catalog=<dbName>;User Id=<userName>;Password=<password>";
#file su cui salvare il contenuto
$fileName = "c:\fileRecuperato.ppt";
#id della tabella Docs relativo al documento da recuperare
$id = New-Object System.Guid("{36B1275E-0D19-45D0-8424-6C02745DFD7F}");

######################################
#accesso al db
$cnn = new-object System.Data.SqlClient.SqlConnection($cnnString);

$cmd = $cnn.CreateCommand();
$cmd.CommandText = "select [content] from docs where [id]=@id";
$cmd.CommandType =  [System.Data.CommandType]::Text;
$cmdPar = new-object System.Data.SqlClient.SqlParameter("@ID", [System.Data.SqlDbType]::Guid);
$cmdPar.Value = $id;
[void]$cmd.Parameters.Add($cmdPar);
$cnn.Open();
$content = $cmd.ExecuteScalar();
$cnn.Close();	

######################################
# scrivo il file su disco
$fs = [System.IO.File]::Create($fileName);
$bw = new-object System.IO.BinaryWriter($fs); 
$bw.Write($content);
$bw.Close(); 
$fs.Close();
Funziona solo con SharePoint 2003
Potrebbe interessarti anche: