gpt4 book ai didi

c# - ApplicationPoolIdentity 下来自 C# 的远程 PowerShell session

转载 作者:行者123 更新时间:2023-11-30 15:02:57 26 4
gpt4 key购买 nike

使用 Library我从 Microsoft 发现,我一直在尝试(使用 C#)使用 Live@Edu 为我的用户提供电子邮件帐户,图书馆使用远程 PowerShell session 来执行此操作。我用模拟本地管理员帐户的 using() { } block 封装了 PowerShell 调用。当我在我自己的开发机器上运行代码时,它运行良好并在 Live@Edu 上配置了帐户,但是当我在生产服务器上运行相同的代码时,我从 PowerShell 收到了 Access is Denied 错误。

我刚刚注意到,如果我将服务器上的 IIS 应用程序池用户更改为我自己的域帐户,则在生产服务器上一切正常,但将其保留为 ApplicationPoolIdentity 不起作用。因此,即使在我的代码中我模拟了本地管理员,这些凭据似乎也没有传递到 PowerShell session 。奇怪的是,当脚本在我自己的机器上运行时,也在 ApplicationPoolIdentity 下,没有问题,这让我相信脚本实际上是在我自己的机器上运行的(我是本地管理员)。

我确实让代码吐出了 $env:username 的值,它给了我机器名,我期待它给我它运行的实际用户名,因为这就是我当我直接在 PowerShell 窗口中键入该命令时获取。

当使用我在代码中模拟的凭据以交互方式登录到远程服务器时,我可以手动将所有 PowerShell cmdlt 键入 PowerShell 窗口,它们工作正常。

我不想让我的 IIS 应用程序池始终在管理员帐户下运行,因为这看起来很愚蠢,那么有没有一种方法可以让我以管理员身份运行 PowerShell 脚本,这比我当前正在执行的模拟更进一步?

更新:

发生了一件奇怪的事情,它被视为对我来说有效的解决方案。将我的代码部署到我创建的服务器后,添加了一个本地管理员帐户。然后我转到 IIS 应用程序池并将所有者从 ApplicationPoolIdentity 更改为我刚刚创建的管理员帐户。之后该页面可以正常运行 PowerShell 脚本。我以前就知道这一点,但不想让 IIS 使用管理员帐户。然后我继续将应用程序池设置回 ApplicationPoolIdentity 并删除本地管理员帐户,页面仍然有效!?我重新启动了 IIS 和 Web 服务器本身,一切正常。我能想到的是,将应用程序池移至管理员帐户会永久更改应用程序池中的某些属性。我现在放了一个 modified question on ServerFault .

最佳答案

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

关于c# - ApplicationPoolIdentity 下来自 C# 的远程 PowerShell session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12184393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com