【发布时间】:2020-02-24 19:48:56
【问题描述】:
我在 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 -
谢谢您的信息。
标签: sql-server powershell