2011-07-08 60 views
0

我试图通过在C#/ ASP.Net编码的Web界面运行Powershell脚本。我将完成我的.ps1脚本,并通过Process.Start(Powershell);来调用它们。通过ASP.Net Powershell - “'='操作失败:访问被拒绝。”

我每次收到的错误是“'='操作失败:访问被拒绝。”失败的powershell脚本部分位于“$ LC = Get-Credential” - 分配在其他地方起作用。注意:在IIS7 Web服务器上运行已发布的.aspx时,这只会失败。通过Visual Studio 2010进行调试时,它可以正常工作。

谢谢!

+0

很明显,Get-Credential无法运行?因为您的帐户没有获得凭据的权限? – Aristos

+0

@Matt(OP,OP和回答者都有相同的名字) - 添加注释,不要输入为答案 – manojlds

+0

该帐户有权获取凭证。毫无疑问。我不确定它会在应用程序池/网络服务器上运行... – 2011-07-09 19:06:37

回答

1

Get-Credential会产生一个弹出窗口 - 这不适用于应用程序池。

+0

对不起manojlds:我有点新在这里。 :) @Matt(responder):你知道一种让弹出窗口工作的方法吗?重新配置IIS或以另一种方式调用它?否则,您是否知道解决方法让用户输入凭据并成功将其传递给脚本? – Matt

+0

@Matt我不认为你可以得到那个使用该命令。我想你需要解决它。看看这个开始http://technet.microsoft.com/en-us/magazine/ff714574.aspx。 – Matt

0

其实这里的“访问被拒绝”是IIS用户试图启动一个进程。诚然,您将无法使用Get-Credential(因为没有主机要求凭证),但即使您对凭证进行硬编码,也无法启动该流程。

在大多数远程上下文中,该priv被关闭。

如果你愿意,你实际上可以让Web应用程序运行在一个真正可以启动进程的帐户下,但是在阅读你的问题的第一段时,我可以看到你正在让自己变得一团糟:

我试图通过在C#/ ASP.Net中编码为 的Web界面运行Powershell脚本。我将完整保留.ps1脚本并通过Process.Start(Powershell);将它们称为 。

虽然这可能似乎容易,这是最肯定的硬盘的方式(因为它推动你走向操作系统的这个不起眼的部分 - 远程执行PRIVS)

如果你在ASP运行PowerShell中.NET,你应该直接使用[PowerShell] API(See MSDN )在.NET中嵌入PowerShell。如果您想模拟工作,您还需要按照this answer中的说明设置您的Runspace。

希望这会有帮助