我创建了一个非常小的脚本来获取 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 数据库。
最佳答案
将最后一行替换为:
$dbs | ?{ @("master", "model", "msdb", "tempdb") -notcontains $_.Name } | select name, collation | export-csv C:\tmp\dbs.csv
关于Powershell:导出csv,从表中排除某些数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32178551/