IIS 脚本禁用多个应用程序的目录浏览

IIS Script to disable directory browse for multiple applications

如果我知道硬编码的名称,下面的这个脚本对 application/site 来说非常有用。但是,我正在寻找一种方法来完成此脚本的功能,但适用于默认网站下的所有站点。下面是一个示例以及 IIS 中显示的示例。感谢任何帮助。

Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/DEFAULT WEB SITE/TESTAPPLICATION2' -filter "system.webServer/directoryBrowse" -name "enabled" -value "False"

我需要在默认网站下以粗体显示的所有内容才能关闭目录浏览。如果它只是一台服务器,这会很简单,但我们正在寻找 50 多台服务器,一个脚本会节省很多时间。再一次,应用程序名称不是硬编码的,而且都是不同的。我只是想找出一种方法来一次禁用多个 sites/applications 功能。

测试应用程序 1

测试应用程序 2

测试应用程序 3

此代码应该有效:

$siteName = "Default Web Site"
$site = Get-IISSite -Name $siteName
$apps = $site.Applications
ForEach ($app In $apps) {
    Set-WebConfigurationProperty -PSPath "MACHINE/WEBROOT/APPHOST/$site$($app.Path)" -Filter "system.webServer/directoryBrowse" -Name "enabled" -Value "False"
}

脚本的作用:

  1. 获取网站。
  2. 获取站点的应用程序。
  3. 遍历每个应用程序并设置您想要的属性。

如果您想要 one-liner,这里是:

$siteName = "Default Web Site"
(Get-IISSite -Name $siteName).Applications.foreach({Set-WebConfigurationProperty -PSPath "MACHINE/WEBROOT/APPHOST/$site$($_.Path)" -Filter "system.webServer/directoryBrowse" -Name "enabled" -Value "False"})