我是Powershell和Powershell ISE的新手。我对面向对象编程语言和一些SQL有很好的经验。基于我在网上找到的代码示例,我设法将powershell连接到数据库并运行/显示查询。
我被困在这里,我需要Powershell逐个遍历SQL服务器上的所有数据库,检查特定的表列是否为" Processed"州。现在,当它看到这个处理状态出现时,我希望power shell显示数据库名称,并且已经处理了。我希望它为所有数据库执行此操作,然后在每个数据库都有一个"处理过的"在该特定细胞中的状态。
我假设我需要某种数组和if else语句等等。如果它可以使用所有数据库名称填充数组。然后一个接一个地删除它们,因为它们符合"已处理"需求。程序继续循环,直到所有数据库都满足此要求。
以下是我目前的代码。
感谢任何帮助!
$DBServer = "SERVER.NAME"
$databasename = "master"
$uid = "USERNAME"
$pwd = "PASSWORD"
$Connection = new-object system.data.sqlclient.sqlconnection #Set new object to connect to sql database
$Connection.ConnectionString ="server=$DBServer;database=$databasename; User ID = $uid; Password = $pwd;"
clear #clears console
Write-host "Connection Information:" -foregroundcolor yellow -backgroundcolor black
$Connection #Displays connection information
### Connect to Database and Run Query
$SqlQuery = @"
SELECT name
FROM master.dbo.sysdatabases
"@
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand #setting object to use sql commands
$Connection.open()
Write-host "Connection to database successful." -foregroundcolor green -backgroundcolor black
$SqlCmd.CommandText = $SqlQuery
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$SqlCmd.Connection = $Connection
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$Connection.Close()
$DataSet.Tables[0]
$Connection.Close()