Вход

Блог
авг 11
Missing Feature

Собственно, скрипт взят по ссылке. Оставил себе, чтобы не забыть.

[MissingFeature] Database [SharePoint_WSS] has reference(s) to a missing feature: Id = [8096285f-1463-42c7-82b7-f745e5bacf29], Name = [My Feature], Description = [], Install Location = [Test-MyFeature]. The feature with Id 8096285f-1463-42c7-82b7-f745e5bacf29 is referenced in the database [SharePoint_WSS], but is not installed on the current farm. The missing feature may cause upgrade to fail. Please install any solution which contains the feature and restart upgrade if necessary.

Если скрипт запустить целиком, то результат выдаст только на экране. Для удаления ошибки не обходимо убрать в конце '-ReportOnly'

function Remove-SPFeatureFromContentDB($ContentDb, $FeatureId, [switch]$ReportOnly)
{
    $db = Get-SPDatabase | where { $_.Name -eq $ContentDb }
    [bool]$report = $false
    if ($ReportOnly) { $report = $true }
    
    $db.Sites | ForEach-Object {
        
        Remove-SPFeature -obj $_ -objName "site collection" -featId $FeatureId -report $report
                
        $_ | Get-SPWeb -Limit all | ForEach-Object {
            
            Remove-SPFeature -obj $_ -objName "site" -featId $FeatureId -report $report
        }
    }
}
function Remove-SPFeature($obj, $objName, $featId, [bool]$report)
{
    $feature = $obj.Features[$featId]
    
    if ($feature -ne $null) {
        if ($report) {
            write-host "Feature found in" $objName ":" $obj.Url -foregroundcolor Red
        }
        else
        {
            try {
                $obj.Features.Remove($feature.DefinitionId, $true)
                write-host "Feature successfully removed from" $objName ":" $obj.Url -foregroundcolor Red
            }
            catch {
                write-host "There has been an error trying to remove the feature:" $_
            }
        }
    }
    else {
        #write-host "Feature ID specified does not exist in" $objName ":" $obj.Url
    }
}

Remove-SPFeatureFromContentDB -ContentDB "SharePoint_WSS" -FeatureId "8096285f-1463-42c7-82b7-f745e5bacf29" –ReportOnly

После этого ошибка пропадает.

авг 11
Missing Setup File
[MissingSetupFile] File [Features\ReportServer\ReportViewer.dwp] is referenced [2] times in the database [SharePoint_WSS], but is not installed on the current farm. Please install any feature/solution which contains this file. One or more setup files are referenced in the database [SharePoint_WSS], but are not installed on the current farm. Please install any feature or solution which contains these files.

Для решения данной ошибки необходимо в SQL Management Studio проверить наличие данной записи в базе:

Select * from AllDocs where SetupPath = 'Features\ReportServer\ReportViewer.dwp'
  

И если в результате есть какие-либо записи, то выполнить другую команду:

Delete from AllDocs where SetupPath = 'Features\ReportServer\ReportViewer.dwp'
  

После этого ошибка пропадает.

авг 11
Missing Site Definition
[MissingSiteDefinition] 1 Sites in database [SharePoint_WSS] has reference(s) to a missing site definition, Id = [3200] Lcid = [1033]. The site definitions with Id 16781 is referenced in the database [SharePoint_WSS], but is not installed on the current farm. The missing site definition may cause upgrade to fail. Please install any solution which contains the site definition and restart upgrade if necessary.

Если столкнулись с такой ошибкой, то необходимо в SQL Management Studio выполнить запрос к базе данных, которая указана в ошибке.

SELECT Title, WebTemplate
FROM dbo.Webs
ORDER BY WebTemplate
  

В ответе увидим список всех подсайтов и ID их шаблонов

image

В резальтате, если удалить подсайт с отсутствующим шаблоном, то ошибка исчезнет.

авг 11
Проблемы с переустановкой PowerPivot 16 для SharePoint

Собственно проблема тянется с 2010 версии. Если по каким-то причинам удалить PowerPivot, то установить обратно его не получится. Выдаст разные ошибки. Например:

The feature with ID ‘1a33a234-b4a4-4fc6-96c2-8bdb56388bd5’ is still activated within this farm or stand alone installation. Deactivate this feature in the various locations where it is activated or use -force to force uninstallation of this feature.
  1. Для правильной переустановки необходимо выполнить команду
  2. stsadm -o uninstallfeature -id ‘1a33a234-b4a4-4fc6-96c2-8bdb56388bd5’ -force
    
  3. Затем с помощью средств установки PowerPivot удалить остатки
  4. После этого произвести установку

И всё работает.

авг 04
Скрипт включения Anti Spam в Exchange 2016

Чтобы не забыть. Запускается из Exchange PowerShell.

& $env:ExchangeInstallPath\Scripts\Install-AntiSpamAgents.ps1
Set-TransportConfig -InternalSMTPServers 192.168.1.1 # IP адрес Exchange
авг 02
Если всё плохо с Exchange 2016

Если решили убить начисто Exchange Server 2016, то есть хорошая статья по этому поводу. Ссылка на статью. И ещё одна статья, если не получилось по первой – ссылка.

Причины могут быть разными. В моём случае невозможность восстановить ECP. Предварительно, перед удалением, копируем базы или делаем резервное копирование.

P.S. Через три дня мучений я восстановил Exchange Server. При этом собрал, наверное, все возможные ошибки, которые бывают при установке. По этому – никому не рекомендую восстанавливать Exchange на туже самую ОС. Самый быстрый способ – вычистить AD и переустановить операционную систему под Exchange.

июл 19
Резервное копирование SharePoint

Самым доступным способом резервного копирования является PowerShell. Можно, конечно, использовать DPM, Acronis и др. Но иногда достаточно и простого скрипта. Ниже как раз он и есть:

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

# Блок переменных

$today = Get-Date
$full = 'Saturday'
$BackupFolder = '\\имя-сервера\путь-к-архиву'
$BackupReport  = $BackupFolder + '\spbrtoc.xml'
$Days = 7
$EmailTo = 'почта_кому@домен.ru'
$EmailServer = 'имя-почтоыого-сервера'
$EmailFrom = 'почта_откуда@домен.ru'

# Остановка службы поиска

write-host 'Начинаем приостановку службы поиска'
$ssa = Get-SPEnterpriseSearchServiceApplication 'имя-службы-поиска'
Suspend-SPEnterpriseSearchServiceApplication -Identity $ssa
write-host 'Служба поиска приостановлена'

# Вспомогательная функция отправки почты

Function SendMail ([String]$vSubject, [String]$vBody) 
{
    Send-MailMessage -From $EmailFrom -Subject $vSubject -To $EmailTo -Body $vBody -SmtpServer $EmailServer -BodyAsHtml -Encoding UTF8

}

# Блок резервного копирования

Try
{
    $ExistsBackups = (Get-SPBackupHistory -Directory $BackupFolder -ShowBackup)
    If ($ExistsBackups -eq $null)
    {
        Backup-SPFarm -Directory $BackupFolder -BackupMethod Full -Verbose -Percentage 5
        SendMail 'SharePoint Farm Full Backup created' 'Добрый день. Создана полная резервная копия фермы SharePoint.'
    }
    else
    {
        if ($full -eq $today.DayOfWeek)
        {
            Backup-SPFarm -Directory $BackupFolder -BackupMethod Full -Verbose -Percentage 5
            SendMail 'SharePoint Farm Full Backup created' 'Добрый день. Создана полная резервная копия фермы SharePoint.'
        }
        else
        {
            Backup-SPFarm -Directory $BackupFolder -BackupMethod Differential -Verbose -Percentage 5
            SendMail 'SharePoint Farm Differential Backup created' 'Добрый день. Создана разностная резервная копия фермы SharePoint.'
        }
    }
}
Catch [System.Exception] 
{
    SendMail 'SharePoint Farm Backup Failed' 'Добрый день. Ошибка создания резервной копии:

$_.' } # Восстановление службы поиска write-host 'Начинаем восстановление службы поиска' Resume-SPEnterpriseSearchServiceApplication -Identity $ssa write-host 'Служба поиска восстановлена' # Блок удаления устаревших резервных копий Try { $LatestDate = (Get-Date).adddays(-$Days) [xml]$FileData = Get-Content $BackupReport $BackupEvents = $FileData.SPBackupRestoreHistory.SPHistoryObject ForEach ($BackupEvent in $BackupEvents) { $BackupDate = [DateTime]$BackupEvent.SPStartTime If ($BackupDate -lt $LatestDate) { $FileData.SPBackupRestoreHistory.RemoveChild($BackupEvent) [System.String]$DelDir = $BackupEvent.SPBackupDirectory Remove-Item $DelDir -Recurse $FileData.Save($BackupReport) } } } Catch [system.exception] { SendMail 'SharePoint Backup Warning' 'Добрый день. Произошла ошибка при удалении резервной копии старше $Days дней. Описание ошибки: $_.' }

Теперь добавляем скрипт в Task Scheduler и получаем письма.

Скрипт удаляет устаревшие копии и создаёт разные архивы. Если необходимо, расписание или схема резервного копирования может быть изменена.

июл 18
Ошибка регистрации Workflow
Register-SPWorkflowService : A response was returned that did not come from the Workflow Manager. Status code = 401: HTTP headers received from the server - WWW-Authenticate: Negotiate

Эта ошибка может возникать сразу после установки Workflow Manager. Я решил её используя следующий скрипт.

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
cd /
cd C:\Windows\System32\inetsrv
.\appcmd.exe set config "Workflow Management Site" /section:system.webServer/security/authentication/windowsAuthentication /useAppPoolCredentials:"True" /commit:apphost
Register-SPWorkflowService -SPSite "http://site.ru" -WorkflowHostUri "http://site.ru:12291" -Force -AllowOAuthHttp
июл 14
Как изменить дизайн PWA

EN: How to change PWA design

Делается это достаточно просто.

  1. Первое, что необходимо сделать это дать возможность изменять PWA в SharePoint Designer. Для этого необходимо найти файл ONET.XML, который находится по такому пути: C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\TEMPLATE\SiteTemplates\PWA\XML. Внутри файла находим параметр DisableWebDesignFeatures = ‘wdfeditpages’ и удаляем его.После этого выполняем iisreset.
  2. Теперь можно редактировать PWA в SharePoint Designer, а значит и применять кастомные мастер страницы. Например, для default.aspx. Как сделать это описано вот здесь.
  3. Часть страниц придётся править локально на сервере. Например, страницы администрирования. Путь к ним: C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\PWA\ADMIN

И несколько примеров:

image

image

    июл 05
    Cryptographic Services failed while processing the OnIdentity() call in the System Writer Object
    Cryptographic Services failed while processing the OnIdentity() call in the System Writer Object.
    
    Details:
    AddLegacyDriverFiles: Unable to back up image of binary Microsoft Link-Layer Discovery Protocol.
    
    System Error:
    Access is denied.

    Решается эта ошибка в несколько этапов.

    1. Запускаем в CMD команду: SC sdshow MUP
    2. Ответ копируем в Notepad. Должно быть примерно такое:

      D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SO)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

      Нас интересует секция D:. Секцию S: пока не трогаем

    3. Копируем в Notepad следующий текст:
    4. MSLLDP D:(D;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BG)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SO)(A;;LCRPWP;;;S-1-5-80-3141615172-2057878085-1754447212-2405740020-3916490453)(A;;CCLCSWLOCRRC;;;SU)
    5. Совмещаем обе строки, чтобы не было повторов. Должно получиться примерно следующее:
    6. MSLLDP D:(D;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BG)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SO)(A;;LCRPWP;;;S-1-5-80-3141615172-2057878085-1754447212-2405740020-3916490453)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
    7. Запускаем в CMD команду: SC sdset и добавляем строку из Notepad

    Ошибка решена.

    1 - 10Далее

     ‭(скрыто)‬ Работа с блогом

     Обо мне

    fot-1913.jpg

    Арсений Евмененко. Бизнес-тренер, архитектор, MCSE и почти альтруист.​​