在PowerShell脚本的内部添加SQL脚本



只是想知道如何在PowerShell脚本的内部添加一个SQL脚本。现在,我有一个脚本可以获取此SQL文件并为每个数据库运行。我想知道我是否可以在PowerShell中包含此SQL脚本。我计划使我的PowerShell脚本每天运行。

这是我目前拥有的

$out = foreach ($SERVER in $SERVERS) { 
 $InvokeParams = @{
  Server = $SERVER 
  Database = 'test database'
  Username = 'username'
  Password = 'password'
  InputFile = 'C:usertest.sql'
    QueryTimeout = 120 #avoid query to break
 }

目标:尝试在InputFile内部实现SQL代码,而不是致电/给SQL文件的路径

目标:

 InputFile = SQL SCRIPT

我只能举一个示例,因为我不知道SQL脚本的内容。

$out = foreach ($SERVER in $SERVERS) { 
 $InvokeParams = @{
  Server = $SERVER 
  Database = 'test database'
  Username = 'username'
  Password = 'password'
  Query = "Select Column1,Column2 from Table"
  QueryTimeout = 120 #avoid query to break
 }
 Invoke-Sqlcmd @InvokeParams
}

您只需要将查询添加到$InvokeParams哈希表中的Query键即可。如果要保持哈希表每处理,则可以随时将查询键入字符串并将其设置为另一个变量。然后在哈希表中使用Query = $variable。如果查询很长(多线(并且其中包含其他引号,则可以使用此处的弦乐(@''@@""@(进行简化。

$Query = @'
USE Database
Select Table1.Column1,Table1.Column2,Table2.Column1
FROM Table1
JOIN Column1 ON Table2.Column1=Table1.Column1
GO
'@
$out = foreach ($SERVER in $SERVERS) { 
 $InvokeParams = @{
  Server = $SERVER 
  Database = 'test database'
  Username = 'username'
  Password = 'password'
  Query = $Query
  QueryTimeout = 120 #avoid query to break
 }
 Invoke-Sqlcmd @InvokeParams
}

最新更新