2016-12-07 4 views
0

Я совершенно новый в powershell, и у меня есть проблема. Я делаю миграцию баз данных на новый сервер, и мне нужно знать для каждого веб-сайта IIS, в котором используется база данных. Потому что некоторые сайты используют одну и ту же базу данных, и мне нужно перенести ее в одно и то же время. Поскольку у меня слишком много сайтов для проверки их строки подключения, я хочу, чтобы сценарий PS отображал все сайты и их имя базы данных.Список всех сайтов и их имен баз данных в powershell

Я уже искал решение, но не смог найти его. Я нашел только команды для списка всех сайтов, состояний, привязок. Импорт-модуль Webadministration Get-ChildItem -Path IIS: \ Sites

Большое спасибо.

С уважением, 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 = "(((Источник данных))) \ s * = (? [a-z \ s0-9] +?);" – Jack

+0

https://regex101.com/ – mfatih