1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
Param([Parameter(Position=0,Mandatory=$True)]$WebApplication, [SWITCH]$Delete)
if ((Get-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue) -eq $null) {
Add-PSSnapin -name Microsoft.SharePoint.PowerShell
}
function send-SQLQuery{
Param([Parameter(Position=0,Mandatory=$True)] $SqlServer,
[Parameter(Position=1,Mandatory=$True)] $SqlDatabase,
[Parameter(Position=2,Mandatory=$True)] $SqlQuery)
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=" + $SqlServer + ";Database=" + $SqlDatabase + ";Integrated Security=True"
write-host $sqlconnection.connectionString -f yellow
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
write-host $sqlquery -f yellow
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0]
}
$webapp = get-spwebApplication $webapplication;
$database = get-spcontentdatabase -webapplication $webapp;
$tab = @();
$result = @()
Test-SPContentDatabase $database | where { $_.Category -eq "MissingSetupFile" } | % {
$MissingSetupFile = "'" + $_.message.substring($_.message.indexof("[") +1, $_.message.indexof("]") - $_.message.indexof("[")-1) + "'";
switch ($delete) {
$true {$action = "DELETE" }
$false { $action = "SELECT *" }
}
$SQLQuery = "{1} from AllDocs where SetupPath = {0}" -f $MissingSetupFile, $action
$errors = Send-SQLQuery -SqlServer $database.server -SqlDatabase $Database.name -SqlQuery $SQLQuery | where { $_.id -ne $null} | select Id, SiteId, DirName, LeafName, WebId, ListId, tp_ZoneID, tp_DisplayName
switch ($delete) {
$false {
foreach ($myerror in $errors) {
$result += "url : {0}/{1}/{2}" -f $WebApp.url, $myerror.dirname, $myerror.leafname
}
}
$true {
$message = "Suppression de la reference a {0} dans la base de donnees" -f $missingSetupFile
write-host $message -f red
}
}
$result | sort -unique |
Partager