2011-06-06 119 views
1

的對象上我有一個SQL還原腳本(文件文件系統),包含像這樣被恢復的數據庫列表的文件:篩選基於字符串

RESTORE DATABASE DB1 ... RESTORE DATABASE DB2 ... RESTORE DATABASE DB3 ...

然後,我有一個對象,其中包含已在線的數據庫列表。

$ onlineDatabases.Database輸出 DB1 DB2

我如何返回只包含DB3數據庫的新恢復腳本?

回答

1
$online_databases = new-object psobject -property @{database = @("DB1","DB2")} 
$test_script = "RESTORE DATABASE DB1","RESTORE DATABASE DB2","RESTORE DATABASE DB3" 

[regex]$online_regex = "RESTORE DATABASE " + '(‘ + (($online_databases.database |foreach {[regex]::escape($_)}) –join 「|」) + ‘)’ 
$new_script = $test_script -notmatch $online_regex 

$new_script 

RESTORE DATABASE DB3 

用您的腳本文件中的get-content替換$ test_script,並將$ new_script輸出到out-file文件中進行保存。

+0

當我在腳本中運行它時,$ new_script返回True而不是腳本。 – 2011-06-06 17:06:35

+0

Scratch,這是一個PowerShell ISE失敗。它什麼都沒有返回。我會看看我能否弄清楚。 – 2011-06-06 17:23:01

+0

用戶失敗。 :)仍在努力。 – 2011-06-06 17:37:06