如何查看 IIS 站点(ADSI 对象)的所有属性?
How to view all properties of an IIS site (ADSI Object)?
在将其发布到此处之前,我已经为此做了很多背景工作。我想使用其 Active Directory 服务接口 (ADSI) 对象发现计算机中 运行 的所有 IIS 站点。到目前为止,我已经找到了发现这些的编程方法。
- 在
c++
中我们可以使用com接口方法ADsOpenObject得到
对象属性。
- 在
c#
中我们可以做同样的事情,但我在获取
dll 工作。
- 在
js
中我们可以用这个script来实现同样的效果,但是有
获取所有属性的一些限制(例如,处理
安全数组)
有没有办法在 GUI 中查看 ADSI 对象的所有属性,或者像浏览器一样可以列出找到的所有 IIS 站点对象?或者一个适当的 script/snippet/cmdlet 可以达到同样的效果?
我刚刚在 C# 中尝试过,非常简单。无需使用 ADSI。但是,是的,如果您不使用 .NET Core,让 DLL 引用起作用可能会很棘手。有很多答案 here,但最简单的方法是手动编辑 .csproj 文件,并将其与其他引用一起添加(在 <ItemGroup>
标记内):
<Reference Include="Microsoft.Web.Administration">
<HintPath>%windir%\System32\inetsrv\Microsoft.Web.Administration.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
您确实需要确保已安装 IIS 管理控制台,如 this answer 的第一部分所述。
在 .NET Core 中,您只需安装 Microsoft.Web.Administration NuGet 包。
然后您可以执行此操作以列出本地计算机上 IIS 中的所有站点:
using (var serverManager = new ServerManager()) {
foreach (var site in serverManager.Sites) {
Console.WriteLine(site.Name);
}
}
在将其发布到此处之前,我已经为此做了很多背景工作。我想使用其 Active Directory 服务接口 (ADSI) 对象发现计算机中 运行 的所有 IIS 站点。到目前为止,我已经找到了发现这些的编程方法。
- 在
c++
中我们可以使用com接口方法ADsOpenObject得到 对象属性。 - 在
c#
中我们可以做同样的事情,但我在获取 dll 工作。 - 在
js
中我们可以用这个script来实现同样的效果,但是有 获取所有属性的一些限制(例如,处理 安全数组)
有没有办法在 GUI 中查看 ADSI 对象的所有属性,或者像浏览器一样可以列出找到的所有 IIS 站点对象?或者一个适当的 script/snippet/cmdlet 可以达到同样的效果?
我刚刚在 C# 中尝试过,非常简单。无需使用 ADSI。但是,是的,如果您不使用 .NET Core,让 DLL 引用起作用可能会很棘手。有很多答案 here,但最简单的方法是手动编辑 .csproj 文件,并将其与其他引用一起添加(在 <ItemGroup>
标记内):
<Reference Include="Microsoft.Web.Administration">
<HintPath>%windir%\System32\inetsrv\Microsoft.Web.Administration.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
您确实需要确保已安装 IIS 管理控制台,如 this answer 的第一部分所述。
在 .NET Core 中,您只需安装 Microsoft.Web.Administration NuGet 包。
然后您可以执行此操作以列出本地计算机上 IIS 中的所有站点:
using (var serverManager = new ServerManager()) {
foreach (var site in serverManager.Sites) {
Console.WriteLine(site.Name);
}
}