2016-12-07 42 views
0

我在PowerShell中很新,我遇到问题。 我正在做新的服务器上的数据库迁移,我需要知道IIS上的每个网站使用哪个数据库。由于某些网站使用相同的数据库,因此我需要同时迁移它。 因为我有太多的网站来检查他们的连接字符串,我想让PS脚本列出所有的网站和他们的数据库名称。列出powershell中的所有网站及其数据库名称

我已经在寻找解决方案,但是我找不到它。 我只找到列出所有站点,状态,绑定的命令。 导入模块Web管理Get-ChildItem -Path IIS:\ Sites

非常感谢。

Regards, Jaka。

回答

0

该脚本可以帮助你,但该脚本在PowerShell中4书面假设web.config文件中存在的PowerShell 4.

Import-Module WebAdministration 

Get-ChildItem -Path IIS:\Sites | ` 
ForEach-Object { 

    $webConfigFile = [xml](Get-Content "$($_.PhysicalPath)\Web.config") 

    foreach($connString in $webConfigFile.configuration.connectionStrings.add) 
    { 
     $dbRegex = "(((Data Source)))\s*=(?<ic>[a-z\s0-9]+?);" 
     $found = $connString.connectionString -match $dbRegex 
     if ($found) 
     { 
      Write-Host "Database: $($Matches["ic"])" 
     } 
    }} 
+0

测试感谢您M.Fatih的回答。 你能告诉我如何检查Web.config文件是否在站点目录中不存在?还有一个问题,它可能使用Out-GridView来处理所有数据,如(网站名称,状态,绑定,数据库名称)? 非常感谢。 问候,杰克 – Jack

+0

嘿,请你解释一下这条线的工作原理:$ dbRegex =“(((Data Source)))\ s * =(? [a-z \ s0-9] +?); – Jack

+0

https://regex101.com/ – mfatih

相关问题