我目前正在构建一个自动化的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=" "& '${deploysolutions.ps1}' '${solutionconfiguration.xml}' " " />
</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 " -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脚本执行admin权限,但也没有成功。有没有人有任何想法?
答案 0 :(得分:0)
你不能在命令runas中包装对powershell的调用吗? 例如runas / user:adminuser powershell.exe
在您的执行声明中?