我想发出一个powershell命令,以便为Web服务器上的所有网站返回连接字符串(特别是我正在查找数据库名称值)...
所以我希望看到像
这样的东西site1 dbname = Northwind
site2 dbname = Fitch
site3 dbname = DemoDB
我尝试过使用IIS Powershell管理单元...我以为我很接近这个:
PS C:\ Windows \ system32> Get-WebApplication | Get-WebConfiguration -filter / connectionStrings / *
但......看完结果后......我的回答似乎不在那里
我对powershell很新 - 所以请原谅我的无知和缺乏经验
任何帮助表示赞赏!
谢谢!
答案 0 :(得分:8)
希望这会让你开始。这假设在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 " "
}
答案 1 :(得分:0)