3

我正在向我们的 C# (.NET 4.5) 站点添加一个页面,该页面将处理 Office 365 帐户配置。我从 Microsoft 找到了一个有用的实用程序,它是一个通过 PowerShell 调用管理 Office 365 用户的 Windows 应用程序。此应用程序在我的 Windows 7 机器上运行良好,并允许我配置/编辑用户帐户。ExcutePowershellCommands()当我从该工具中采用完全相同的方法并将其放入我的 Web 应用程序时,它不起作用,说我尝试的任何 Office 365 cmdlet 都无法识别。根据该工具的说明,这是因为用户帐户没有运行 Windows PowerShell 的权限,这是有道理的,因为 IIS 将在与运行本机 Windows 应用程序不同的用户帐户下运行代码。

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

谢谢!

4

2 回答 2

0

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

于 2013-06-09T01:22:03.903 回答
0

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

于 2013-06-18T15:43:29.710 回答