2016-12-07 70 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

相關問題