为什么 C# Powershell 方法在 Windows 应用程序中可以运行,但在 Web 应用程序中却不能运行?

3
我正在为我们的C#(.NET 4.5)网站添加一个页面,以处理Office 365帐户配置。我发现Microsoft提供了一个有用的工具,它是一个通过PowerShell调用管理Office 365用户的Windows应用程序。这个应用在我的Windows 7机器上运行良好,允许我进行帐户配置和编辑。当我将来自该工具ExcutePowershellCommands()方法复制到我的Web应用中时,它不起作用,并显示任何我尝试使用的Office 365 cmdlet都无法识别。根据该工具的说明,这是由于用户帐户没有权限运行Windows PowerShell造成的,在IIS下运行代码的用户帐户与运行本机Windows应用程序的用户帐户不同。

如果我在我的代码中使用一个using()块,模拟一个本地管理员,那么函数在我的Web应用程序中就可以正常使用。但是,如果我创建一个调用此ExcutePowershellCommands()函数的单元测试并运行测试,我只会收到错误,说Office 365 cmdlet无法识别(即使我仍然将该函数包装在模拟管理员的using()块中)。有没有办法找出单元测试正在哪个帐户下运行(TestDriven.Net)?如果我进行模拟操作,那么单元测试运行在哪个帐户下甚至都不重要吧?

谢谢!


2
听起来你的IIS帐户正在运行的配置文件中没有加载Office 365的cmdlets。我无法确定你需要添加什么才能使它们被识别。我建议首先通过运行“gc $profile”查看返回结果,以查看是否引用了它们。 - Goyuix
看起来我没有个人资料,因为当我输入$profile时,路径列表中没有文件。 - kd7iwp
2个回答

0

0
原来问题与我应用程序的 IIS 应用程序池中的“加载用户配置文件”选项设置为服务器上的False有关(False是 Windows Server 2008 的默认设置)。在阅读了有关此属性的信息后,我并不完全确定为什么这对我的情况很重要,但这是我本地机器上的 IIS 与 Web 服务器不同的一个设置。现在,在服务器上所有 PowerShell 调用都可以无缝运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接