我创建了一个非常小的脚本来获取SQL Server数据库的某些信息,这些信息将被传递给另一个脚本。
它低音获取服务器上存在数据库的名称和排序,并将值写入CSV文件。代码正在运行,但我想从文件中排除系统数据库。任何人都可以帮助我实现这一目标,我对Powershell来说还是新手,所以请耐心等待。
代码:
param (
[parameter(mandatory=$true)] [string] $servername
)
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null
$s = New-Object ('Microsoft.SqlServer.Management.Smo.Server') $servername
$dbs=$s.databases
$dbs | select name, collation | export-csv C:\tmp\dbs.csv
CSV输出:
DB1,"SQL_Latin1_General_CP1_CI_AS"
DB2,"SQL_Latin1_General_CP1_CI_AS"
DB3,"SQL_Latin1_General_CP1_CI_AS"
master,"Latin1_General_CI_AS"
model,"Latin1_General_CI_AS"
msdb,"Latin1_General_CI_AS"
tempdb,"Latin1_General_CI_AS"
我想要从CSV文件中排除的是master,model,msdb和tempdb数据库。
答案 0 :(得分:2)
将最后一行替换为:
$dbs | ?{ @("master", "model", "msdb", "tempdb") -notcontains $_.Name } | select name, collation | export-csv C:\tmp\dbs.csv