【发布时间】:2018-02-26 09:50:16
【问题描述】:
到目前为止,所有关于此的谷歌搜索都谈到了域用户,或者在本地机器上运行进程,这都不适合我。
我正在运行一个进程,我们的构建/部署服务器(在 Team City 或本地机器上运行的 Cake 构建脚本)将 wep 应用程序部署到远程服务器上的 IIS。作为其中的一部分,我需要设置它部署到的目录的权限,以便 IIS 可以查看和运行应用程序。我的问题是无法从 Team City 服务器看到创建的虚拟帐户 (IIS AppPool\MyAppPool),因此我无法设置权限。我得到一个例外:
System.Security.Principal.IdentityNotMappedException:部分或全部身份引用无法翻译。
那么,有没有办法从 Team City 服务器或我的本地计算机设置 Web 服务器上文件夹的文件权限,以允许通过虚拟 IIS AppPool 帐户进行访问? (由于我使用的是Cake Build,任何 C# 中的解决方案都是理想的,但如果绝对必要,我可以启动其他进程)
【问题讨论】:
-
您可以创建一个power shell或批处理脚本,它可以创建IIS目录,映射到物理位置,还可以为IIS用户提供必要的权限,并作为团队城市中的一个步骤trycatchfail.com/2008/12/05/…
-
确保 powershell 在本地机器上运行,而不是在蛋糕服务器上,因为 IIS 用户是该机器的本地用户。您可能需要使用 Powershell 远程处理来实现此目的。
-
@Liam 重申一下,我无法在 Web 服务器(powershell 或其他)上运行该进程
-
您不需要,powershell 远程处理允许您在远程到另一台服务器的服务器上执行 powershell 脚本。如果不这样做,则根本无法与 IIS 用户交互。它是该服务器上的本地用户帐户,即使用
Enter-PSSession Server01 -
@Liam 这看起来很有希望,因为它在 PS 提示下工作,尽管 New-PSSession 似乎是脚本中需要的。 :)