2011-03-28 136 views
1

我目前正在构建一个将部署SharePoint Web部件的自动NAnt脚本。这个过程的恶性代码: -通过NAnt运行具有管理员权限的PowerShell脚本

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

回答

0

不能把命令runas中的调用封装到powershell中吗? 例如runas/user:adminuser powershell.exe

在你的exec语句中?

+0

没有不幸的不是。这是一个自动运行的脚本,按照您的建议执行提示输入密码。另外,用户是管理员。问题是需要以“以管理员身份运行”模式运行PowerShell。 – grimorde 2011-03-29 14:23:39

+0

id发誓它认为你可以在脚本中提供密码,看起来像我错了。 – 2011-03-29 14:33:04

相关问题