我正在使用PowerShell脚本来运行针对多个服务器和数据库的查询,其目的是将服务器和数据库动态添加到数组并执行它们。
目前我被困在最后一部分,一切都在一起。我可以添加服务器,但不能添加数据库。
我想要实现的目标:使用MFP GUI的PowerShell脚本对多个MSSQL服务器运行查询,这些服务器都包含相同的数据库(具有不同的数据),但数据库具有不同的名称,如Sql_Data-Node1
,{{1}等等。
我遇到的问题:我设法将服务器动态添加到数组中,当我运行查询时,我得到了正确的响应。在这种情况下,我使用了master数据库,我将其设为静态(SqlData-Node2
)。当我尝试对数据库执行相同操作(将它们添加到数组中)时,我收到错误:
-database 'master'
我的代码:
Invoke-Sqlcmd : Cannot validate argument on parameter 'Database'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
At C:\Users\master\Documents\MULTSCRIPT\MultiQueryV0.6.ps1:368 char:109
+ ... ame -Password $PassWord -ServerInstance $_[0] -Database $_[1] -Query ...
+ ~~~~~
+ CategoryInfo : InvalidData: (:) [Invoke-Sqlcmd], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand
答案 0 :(得分:0)
似乎以下解决方案有效。 信用证转到:Mutiple Variables in Foreach Loop [Powershell]
$window.Button.add_Click(
{ $DataBase = $window.DataBase.Text.ToString()
$SQLQuery = $window.Query.Text.ToString()
$Server = $ServerAddress.getenumerator()
$Database = $DBSet.getenumerator()
while($Server.MoveNext() -and $Database.MoveNext()){
Invoke-Sqlcmd -AbortOnError -Username $UserName -Password $PassWord -ServerInstance $Server.Current -Database $Database.Current -Query $SQLQuery -QueryTimeout 30 | Out-GridView -Title $Server.Current}