Запустите скрипт PowerShell с правами администратора через NAnt - PullRequest
1 голос
/ 28 марта 2011

В настоящее время я создаю автоматизированный скрипт 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=" &quot;&amp; &apos;${deploysolutions.ps1}&apos; &apos;${solutionconfiguration.xml}&apos; &quot; " />
</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 &quot; -file ${deploysolutions.ps1} &quot; -ArgumentList &apos;${solutionconfiguration.xml}&apos; " />

2. <arg value=" &quot; start-process powershell -verb runas &amp; &apos;${deploysolutions.ps1}&apos; &apos;${solutionconfiguration.xml}&apos; &quot; " />

3. <arg value=" &apos; start-process powershell -verb runas &apos; " />
<arg value=" &quot;&amp; &apos;${deploysolutions.ps1}&apos; &apos;${solutionconfiguration.xml}&apos; &quot; " />

Я также попытался выполнить администратор прямо через сценарий PowerShell, но безуспешно.У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 29 марта 2011

Не можете ли вы просто обернуть вызов powershell в команду runas?например, runas / user: adminuser powershell.exe

в вашей инструкции exec?

...