我想发出一个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/