В настоящее время я создаю автоматизированный скрипт NAnt, который будет развертывать веб-части SharePoint.Код NAnt для этого процесса: -
<echo message="Deploying Solutions" />
<exec failonerror="true" program="${powershell.exe}">
<arg value="-noprofile" />
<arg value="-nologo" />
<arg value="-noninteractive" />
<arg value="-command" />
<arg value=" "& '${deploysolutions.ps1}' '${solutionconfiguration.xml}' " " />
</exec>
, где $ {deploysolutions.ps1} - это скрипт, который нужно запустить, а $ {solutionconfiguration.xml} - это аргумент, который будет передан в скрипт.
Это прекрасно работает при работе на моей локальной машине.Когда я пытаюсь выполнить это через круиз-контроль на нашем сервере разработки SharePoint, я сталкиваюсь с ошибками разрешения.Я проверил, что используемые учетные данные имеют необходимые разрешения.Ошибка, которую я вижу в журнале сборки: -
[exec] Deploy-Solution : Unable to add solution MyWebParts.wsp
. Это ошибка, которую я выдаю в скрипте PowerShell
try
{
Write-Host "Adding solution $name"
Add-SPSolution -LiteralPath $path -ErrorAction Stop
Start-Sleep -Seconds 60
# as above
}
catch
{
Write-Error "Unable to add solution $name"
throw "Could not add solution $name"
}
Однако учетные данные в порядке при запускекоманды через консоль PowerShell при запуске от имени администратора.
Можно ли как-то сказать вызову NAnt для запуска PowerShell от имени администратора?Я попытался следующее безуспешно: -
1. <arg value="Start-Process powershell -verb runas -FilePath " -file ${deploysolutions.ps1} " -ArgumentList '${solutionconfiguration.xml}' " />
2. <arg value=" " start-process powershell -verb runas & '${deploysolutions.ps1}' '${solutionconfiguration.xml}' " " />
3. <arg value=" ' start-process powershell -verb runas ' " />
<arg value=" "& '${deploysolutions.ps1}' '${solutionconfiguration.xml}' " " />
Я также попытался выполнить администратор прямо через сценарий PowerShell, но безуспешно.У кого-нибудь есть идеи?