为什么c# Powershell方法在Windows应用程序中工作,而在Web应用程序中不工作

本文关键字:工作 应用程序 而在 Web Powershell Windows 为什么 方法 | 更新日期: 2023-09-27 18:16:43

我要添加一个页面到我们的c#。NET 4.5)站点,该站点将处理Office 365帐户配置。我发现了微软(Microsoft)提供的一个很有用的实用程序,它是一个Windows应用程序,可以通过PowerShell调用来管理Office 365用户。这个应用程序在我的Windows 7机器上运行得很好,并允许我配置/编辑用户帐户。当我从工具中取出完全相同的ExcutePowershellCommands()方法并将其放入我的web应用程序时,它不起作用,说我尝试的任何Office 365 cmlet都无法识别。根据该工具的说明,这是因为用户帐户没有运行Windows PowerShell的权限,这是有道理的,因为IIS将在运行本机Windows应用程序的单独用户帐户下运行代码。

如果我用冒充本地管理员的using()块包围我的代码中的ExcutePowershellCommands(),则该函数在我的web应用程序中工作。但是,如果我创建一个调用此ExcutePowershellCommands()函数并运行测试的单元测试,我只会收到Office 365 cmdlets无法识别的错误(即使我仍然将该函数包装在冒充管理员的using()块中)。是否有一种方法可以找出单元测试在哪个帐户下运行(使用TestDriven.Net)?如果我进行模拟,为什么单元测试在哪个帐户下运行如此重要?

谢谢!

为什么c# Powershell方法在Windows应用程序中工作,而在Web应用程序中不工作

您应该注意,当您创建概要文件时,它可以是特定于用户或机器的。此外,它可以适用于所有shell或仅适用于powershell。http://technet.microsoft.com/en-us/magazine/2008.10.windowspowershell.aspx

事实证明,问题与IIS应用程序池中的Load User Profile选项有关,因为我的应用程序在服务器上设置为False (False是Windows server 2008的默认值)。在阅读了这个属性之后,我不完全确定为什么这对我的场景很重要,但这是我本地机器上的IIS设置不同于Web服务器的设置。现在,所有的PowerShell调用都可以在服务器上完美地工作。

相关文章: