我正在服务器核心环境中设置IIS 2012 R2系统。 我已经启用了IISpipe理服务并分配了一个证书,但是找不到如何configuration什么IP可以连接到8172的限制。关键:HKLM \ SOFTWARE \ Microsoft \ WebManagement \ Server \ RemoteRestrictions这样做,但编码如此你不能只看它,知道该放什么东西。 通过在一个带有GUI的系统上设置并复制键值来克服它,但有没有正确的方法? 知道string编码将有助于如果registry编辑是唯一的PowerShell选项。
很好的问题…我不认为有一个好方法。 我没有看到以编程方式设置它的任何logging的方式。 编码看起来像base64,所以如果你真的迫切需要自动执行此操作,请尝试通过GUI设置RemoteRestrictions值,然后尝试使用Powershell自己复制相同的base64string,如下所示:
$RemoteRestrictions = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("192.168.1.50"))
如果你能拿出相同的string,那么你已经知道了他们的秘密酱油。 (警告:这可能是一个傻瓜的差事,浪费你的时间,我不知道在base64编码之前他们可能会把它放在那里。
但是正式的,我认为你唯一的办法就是从安装了RSAT(远程服务器pipe理工具)的另一台服务器远程pipe理这个IIS服务器。
编辑:其实我认为REG_SZ值是UTF-16小端(每个字符是两个字节长),所以你可能需要使用UTF16类而不是UTF8。
这是我们的部署过程的最后一部分,这是一个手动步骤,我决定解密RemoteRestrictions设置,并设法提出一个解决scheme来产生这个设置。
您可以在下面的要点中find完整的PowerShell脚本,它允许您定义全局允许/拒绝设置以及一组允许/拒绝的IP和子网
https://gist.github.com/guavadevelopment/7217d87943eb69ac60f0f96f3be00874
$remoteRestrictions = (Generate-RemoteRestrictions -globalDeny $True -addresses "1.1.1.1/255.255.255.255")
关于结构的几点提示:
好消息是,在任何机器上的编码是相同的,所以从另一台机器复制string应该工作正常。
HKLM\SOFTWARE\Microsoft\WebManagement\Server\RemoteRestrictions的string是base64编码的
[System.Convert]::FromBase64String($input)
返回一个字节数组,但我无法将其转换为有意义的string。