【发布时间】:2019-07-24 16:51:45
【问题描述】:
在这里找到了我的一部分答案,Get dbname from multiple web.config files with powershell
但需要它通过 IIS 站点和这些“站点”内的所有 Web 应用程序进行递归。我在每个“站点”中有多个带有多个 Web 应用程序的 IIS“站点”,需要检查每个 web.config 文件并提取使用的数据库。无法弄清楚如何递归上面链接中的代码。
#Code from link above.
Import-Module WebAdministration
Get-WebApplication |
ForEach-Object {
$webConfigFile = [xml](Get-Content "$($_.PhysicalPath)\Web.config")
Write-Host "Web Application: $($_.path)"
foreach($connString in $webConfigFile.configuration.connectionStrings.add)
{
Write-Host "Connection String $($connString.name): $($connString.connectionString)"
$dbRegex = "((Initial\sCatalog)|((Database)))\s*=(?<ic>[a-z\s0-9]+?);"
$found = $connString.connectionString -match $dbRegex
if ($found)
{
Write-Host "Database: $($Matches["ic"])"
}
}
Write-Host " "
}
希望这样可以为每个 IIS 站点和 IIS 站点中的每个 Web 应用程序输出每个 web.config 文件的数据库名称。目前这只查看 IIS 站点中的第一个 Web 应用程序,不查看 IIS 站点中的任何其他应用程序,也不会查看 IIS 站点的 web.config 是否具有到数据库的连接字符串。
【问题讨论】:
标签: powershell iis web-config