【发布时间】:2011-07-24 12:01:38
【问题描述】:
我目前正在构建一个自动化的 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 开发服务器上的巡航控制运行它时,我遇到了权限错误。我已验证所使用的凭据具有必要的权限。我在构建日志中看到的错误是:-
[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 脚本执行管理员权限,但也没有成功。有人有什么想法吗?
【问题讨论】:
标签: powershell nant