我想发出一个powershell命令向我返回Web服务器上所有网站的连接字符串(特别是我正在寻找的db name值)。

所以我想看看

site1 dbname =罗斯文

site2 dbname =菲奇

site3 dbname = DemoDB

我已经尝试使用IIS Powershell管理单元...我以为我对此很满意:

PS C:\Windows\system32>获取Web应用程序| Get-WebConfiguration -filter/connectionStrings/*

但是...看完结果后...我的答案似乎不在那儿了

我对Powershell非常陌生-请原谅我的无知和经验不足

任何帮助表示赞赏!

谢谢!

最佳答案

希望这会帮助您入门。这只是假设Web应用程序的物理路径的物理路径上将存在一个web.config文件。它不会递归在Web应用程序中找到其他web.config文件。它还假定您的连接字符串在connectionStrings配置元素中。

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 - 使用Powershell从多个web.config文件中获取dbname,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7053595/

10-11 22:50
查看更多