通过NAnt运行具有管理员权限的PowerShell脚本

时间:2011-03-28 13:30:41

标签: powershell nant

我目前正在构建一个自动化的NAnt脚本,该脚本将部署SharePoint Web部件。此过程的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开发服务器上的巡航控件运行此操作时,我遇到了权限错误。我已经验证所使用的凭据具有requisiste permisisons。我在构建日志中看到的错误是: -

     [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脚本执行admin权限,但也没有成功。有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

你不能在命令runas中包装对powershell的调用吗? 例如runas / user:adminuser powershell.exe

在您的执行声明中?