В настоящее время я пытаюсь автоматизировать развертывание изменений брендинга на нашем сайте Business Intelligence SharePoint через PowerShell. Я использую следующий код для развертывания WSP в моем локальном экземпляре SharePoint для тестирования.
function Uninstall-AllSPSolutions {
param (
[switch] $Local,
[switch] $Confirm
)
Start-SPAssignment -Global;
foreach($solution in (Get-SPSolution | Where-Object { $_.Deployed })) {
write-host "Uninstalling Solution " $solution.Name;
if($solution.DeployedWebApplications.Count -gt 0) {
Uninstall-SPSolution $solution -AllWebApplications -Local:$Local -Confirm:$Confirm;
} else {
Uninstall-SPSolution $solution -Local:$Local -Confirm:$Confirm;
}
do {
Start-Sleep 5;
$solution = Get-SPSolution $solution;
} while($solution.JobExists -and $solution.Deployed)
}
Stop-SPAssignment -Global;
}
function Remove-AllSPSolutions {
param (
[switch] $Confirm
)
Get-SPSolution | Where-Object { !$_.Deployed } | Remove-SPSolution -Confirm:$Confirm
}
echo "Loading Sharepoint Snapin"
$snapin = Get-PSSnapin | Where-Object { $_.Name -eq "Microsoft.SharePoint.Powershell" }
if ($snapin -eq $null) {
Write-Host "[INIT] Loading SharePoint Powershell Snapin"
Add-PSSnapin "Microsoft.SharePoint.Powershell"
}
#Some variables
#Include Url Site
$SITEURL="sharepoint url"
#Include WSP File Path
$WSPFILEPATH="C:\Users\Administrator\Desktop\folder\SharepointDeployer.wsp"
#Include WSP Name
$WSPNAME="SharepointDeployer.wsp"
echo "Uninstall Solutions"
Uninstall-AllSPSolutions -Confirm
echo "Remove Solutions"
Remove-AllSPSolutions -Confirm
echo Deploy Test solution
echo "1. Add Solution"
Add-SPSolution $WSPFILEPATH
echo "2. Deploy Solution"
#Install-SPSolution -identity $WSPNAME -force -AllWebApplications $SITEURL -GACDeployment
Install-SPSolution -identity $WSPNAME -force -AllWebApplications -GACDeployment
echo "2. Enable Feature"
Enable-SPFeature –Identity "SharepointDeployer Feature1" –url $SITEURL
Решение развертывается просто отлично, как я вижу в Central Admin, но изменения не вносятся в файлы, когда я смотрю в SharePoint Designer.
Все файлы имеют следующие атрибуты для перезаписи в модуле
IgnoreIfAlreadyExists="true" Type="GhostableInLibrary"
Я попытался поиграть с функцией, чтобы увидеть, есть ли там проблема, вот результаты
Ферма: я не могу создать WSP через Visual Studio. Ошибка: элемент проекта «Имя модуля» не может быть развернут с помощью функции с областью действия фермы.
Сайт: функция не является функцией уровня фермы и не находится на уровне сайта, определенном URL-адресом.
Интернет: то же, что и выше
WebApplication: я получаю ту же ошибку, что и Farm, за исключением того, что там написано WebApplication Scope.
Я не уверен, что мне нужно сделать, чтобы это заработало, так как это должно быть просто (мы говорим о 3 файлах CSS, 2 изображениях и мастер-странице).
Любая помощь могла бы быть полезна.