如何使用power shell检查SQL Server 2008 R2数据库是否存在

如何使用power shell检查SQL Server 2008 R2数据库是否存在,sql,powershell,sql-server-2008-r2,Sql,Powershell,Sql Server 2008 R2,我有一个数据库脚本,它工作得很好,但是我遇到了一个问题,我需要一个if语句来检查用户指定的数据库是否已经存在。如果存在,则脚本应为其创建备份;如果不存在,则脚本应显示错误 这是我的剧本 #Loads Assembly [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null [System.Reflection.Assembly]::LoadWithPartialName("Mi

我有一个数据库脚本,它工作得很好,但是我遇到了一个问题,我需要一个
if
语句来检查用户指定的数据库是否已经存在。如果存在,则脚本应为其创建备份;如果不存在,则脚本应显示错误

这是我的剧本

#Loads Assembly
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoExtended") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo") | Out-
Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoEnum") | Out-Null

$server = New-Object ("Microsoft.SqlServer.Management.Smo.Server") "(local)"
$bkdir = "C:\DBbackups" #We define the folder path as a variable 
$database = Read-Host "Please Specify Database Name"
$dbs = $server.Databases

#To Backup one Database specify exact name
#To backup multiple database which starts with same name use "*" 
foreach ($db in $dbs) 
{
 if($db.Name -like $database) 
 {
 $dbname = $db.Name
 $dt = get-date -format yyyyMMddHHmmss #We use this to create a file name based on the timestamp
 $dbBackup = new-object ("Microsoft.SqlServer.Management.Smo.Backup")
 $dbBackup.Action = "Database"
 $dbBackup.Database = $dbname
 $dbBackup.Devices.AddDevice($bkdir + "\" + $dbname + "_db_" + $dt + ".bak", "File")
 $dbBackup.SqlBackup($server) 
 write-host "Database backup is successful for"$dbname
 write-host "."
 write-host "New Backup file is"$dbname"_db_"$dt".bak"
 }
 }

 write-host "New Backup Location is" $bkdir
这就是我修改的内容

 foreach ($db in $dbs) 
{


 if($db.Name -like $database) 
 {
 $dbname = $db.Name
 $dt = get-date -format yyyyMMddHHmmss #We use this to create a file name based on the timestamp
 $dbBackup = new-object ("Microsoft.SqlServer.Management.Smo.Backup")
 $dbBackup.Action = "Database"
 $dbBackup.Database = $dbname
 $dbBackup.Devices.AddDevice($bkdir + "\" + $dbname + "_db_" + $dt + ".bak", "File")
 $dbBackup.SqlBackup($server) 
 write-host "Database backup is successful for"$dbname `n

 write-host "New Backup file is"$dbname"_db_"$dt".bak" `n

 }
else {
write-host "invalid"
}
}

尝试将else添加到if($db.Name-like$database)块
if($db.Name-like$database){#执行当前备份工作}

否则{write output“Database not exist”}

我正在使用sql server 2008 R2,有人能帮我吗?这不起作用,因为我有一个for循环,我得到了8到9次显示无效的数据库如果我在for循环的顶部使用这一行,它对我有效…如果($dbs.Name-like$Database){do backup}
if ($db.Name -like $database) { # do current backup stuff }
else { write-output "Database doesn't exist" }