我的PowerShell脚本运行:test.ps1 -dbo test1 => 这有效,它进入了提供的数据库。
SELECT name FROM sys.databases
where name not in ('master', 'tempdb', 'model', 'msdb', 'test1');
但是如果我想要进入多个数据库,例如:test.ps1 -dbo test1, test2, test3 => 这被视为一个字符串。
SELECT name FROM sys.databases
where name not in ('master', 'tempdb', 'model', 'msdb', 'test1, test2, test3');
我该如何在Powershell中将字符串拆分为单独的部分,就像这样:
SELECT name FROM sys.databases
where name not in ('master', 'tempdb', 'model', 'msdb', 'test1', 'test2', 'test3');
代码:
Param(
[Parameter(Mandatory=$false, ValueFromPipeline=$true)]
[Alias("dbo")]
[String[]]
$databaseName
)
$dbquery = @"
SELECT name FROM sys.databases
where name not in ('master', 'tempdb', 'model', 'msdb', '$databaseName');
"@
Invoke-Sqlcmd -ServerInstance "$databaseIP" -Database "master" -Username $databaseUser -Password $databasePass -Query $dbquery
我尝试使用 split 和 join,但它并没有像我预期的那样工作。
dbo.sysdatabases
已经被弃用多年了(可能自 SQL Server 2000 开始,我真的记不清了?)。你应该使用sys.databases
。 - Thom A