问题描述
我正在尝试通过脚本自动完成 SSRS 的完整安装。除了以下内容,我已经能够使用 RSConfig 覆盖所有领域:
任何方向都很感激
解决方法
为了自动化 WebService Url 配置,我所做的是使用 PowerShell 创建自签名证书并使用以下脚本绑定安全 HTTPS 网络链接的证书。
$serverClass = get-wmiobject -namespace "root\Microsoft\SqlServer\ReportServer\RS_SSRS\v15\Admin" -class "MSReportServer_ConfigurationSetting"
配置SSRSCertificate "https://$($NewHostNameForCertificate):$SSLPortNumber" $Thumbprint $SSLPortNumber
函数配置SSRSCertificate($sslURL,$certHash,$sslPort) { $certHash = $certHash.ToLower() IIS证书端口绑定 ReserveSSRSURL $sslUrl $LCID CreateCertBinding $ReportServerWebService $certHash $sslPort $LCID CreateCertBinding $ReportManager $certHash $sslPort $LCID }
函数IISCertPortBinding()
{
Get-WebBinding -Port $SSLPortNumber -Name "默认网站" | Remove-WebBinding
netsh http 删除 sslcert ipport=0.0.0.0:$SSLPortNumber
}
函数 ReserveSSRSURL($sslUrl,$lcid)
{
[XML]$ReportConfigFileContent = Get-Content $ReportConfigFileContentPath
$URLItems = $ReportConfigFileContent.SelectNodes("//URL[UrlString='http://+:$PortNumber']")
foreach($URLItems 中的 $URLItem)
{
$NewURLItem = $URLItem.Clone()
$NewURLItem.UrlString = $sslUrl
$NewURLItem.AccountSid = "S-1-5-18"
$NewURLItem.AccountName = "LocalSystem"
$InsertAfterNode = $URLItem;
$URLItem.ParentNode.InsertAfter($NewURLItem,$InsertAfterNode)
}
$ReportConfigFileContent.save($ReportConfigFileContentPath)
}
函数 CreateCertBinding($ServiceOrReport,$sslPort,$lcid) { $result = $serverClass.CreateSSLCertificateBinding($ServiceOrReport,"0.0.0.0",$lcid) }