2015-11-03 80 views

回答

2

我的建议是不要做,使用ServerManager的,虽然有可能通过配置的API,你就不会被尊重供应商模式,IIS用户的支持。例如,某人可能拥有“SQL Server”数据库提供程序,然后用户在配置中确实无法工作。

为此,请在Microsoft.Web.Management.dll(在windows \ system32 \ inetsrv)文件夹中使用API​​,名为ManagementAuthentication,它具有两种方法:CreateUser和Grant。

我几年前写了一篇博客条目如何从PowerShell中称他们为: http://blogs.msdn.com/b/carlosag/archive/2009/10/23/adding-iis-manager-users-and-permissions-through-powershell.aspx

但称他们是那么容易,因为:

Microsoft.Web.Management.Server.ManagementAuthentication.CreateUser("MyUser", "ThePassword"); 
Microsoft.Web.Management.Server.ManagementAuthorization.Grant("MyUser", "Default Web Site", false); 

这会正确使用哪个提供商配置,如果使用默认配置提供程序,那么它会将其保存在Administration.config中,但如果它位于其他位置,它将执行正确的操作(例如将数据插入数据库或其他位置)。

+0

我对这个建议有点问题。第一行确实创建了一个MyUser用户。但是第二行似乎不足以让用户登录。当我在IIS管理器中打开FTP站点(在运行您的建议代码之后)时,我可以在我的FTP站点的“IIS管理器权限”中找到MyUser,但是我无法在“FTP授权规则”中找到它。因此,FTP登录失败并显示消息“530-用户无法登录,主目录无法访问”。只要我将用户添加到“FTP授权规则”中,它就开始工作。这发生在有和没有FTP用户隔离的情况下。帮帮我? – DenNukem

+0

哦,这保存了我的熏肉:[C:\ Windows \ system32 \ inetsrv \ appcmd.exe设置配置“MyFtpSite” - 部分:system.ftpServer /安全/授权/ +“[accessType ='允许',users ='MyUser ',permissions ='读取,写入']“/ commit:apphost]如果没有它,我将无法登录。 – DenNukem

0

我最终做了这几件事。在PowerShell中第一部分,每建议从卡洛斯:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Management") 
[Microsoft.Web.Management.Server.ManagementAuthentication]::CreateUser("MyUser", "abc123") 
[Microsoft.Web.Management.Server.ManagementAuthorization]::Grant("MyUser", "MyFtpSite", $FALSE) 

,然后这个命令行:

appcmd.exe set config "MyFtpSite" -section:system.ftpServer/security/authorization /+"[accessType='Allow',users='MyUser',permissions='Read, Write']" /commit:apphost 

所有的合并这些让我添加一个新的IIS管理器用户,并给它的权利我的FTP站点。

更多详情,请登录Microsoft site

相关问题