根据字符串对象过滤文件

时间:2011-06-06 07:24:06

标签: powershell powershell-v2.0

我有一个SQL恢复脚本(文件系统上的文件),其中包含要恢复的数据库列表,如下所示:

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

然后我有一个对象,其中包含已经在线的数据库列表。

$ onlineDatabases.Database输出 DB1 DB2

如何返回仅包含DB3数据库的新还原脚本?

1 个答案:

答案 0 :(得分: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

将$ test_script替换为脚本文件中的get-content,并将$ new_script传递给out-file以保存它。