想通了这个。Powershell 不是我的强项之一,因此对于在其构建服务器上寻找 SQL Server Powershell 工具的其他人来说。
您需要在构建服务器上安装 SQL Server Feature Pack(如果未安装 SQL Server)。该功能包适用于 2012 及更高版本。
您需要的具体项目是: SQL CLR 类型 SQL 共享管理对象 Powershell 工具
Powershell 工具将安装在 C:\Program Files\Microsoft SQL Server{version}\Tools\PowerShell\Modules 目录中。其中{版本:110=2012, 120=2014, 130=2016}
使用 PS 工具的路径引用 - 您需要做的就是创建一个本地模块路径引用:
Param(
[Parameter(Mandatory=$True)][string]$server,
[Parameter(Mandatory=$True)][string]$database,
[Parameter(Mandatory=$True)][string]$sqlPowerToolsPath,
[Parameter(Mandatory=$True)][string]$sqlFile
)
$env:PSModulePath = $env:PSModulePath + ";$sqlPowerToolsPath"
我的 PS 脚本采用参数 server、database、sqlPowerToolsPath、sqlFile 并设置本地会话 PSModulePath 以在参数中包含路径。在我的例子中是 C:\Program Files\Microsoft SQL Server\120\Tools\PowerShell\Modules。
脚本的其余部分导入 SQLPS 模块并执行参数中指定的 SQL 文件:
Import-Module 'SQLPS' -DisableNameChecking;
$sql = [Io.File]::ReadAllText($sqlFile);
Invoke-Sqlcmd -Query $sql -ServerInstance "$server" -Database "$database"