Reporting Services SharePoint 模式的 PowerShell Cmdlet

適用於:✅SQL Server Reporting Services (2016) ✅SharePoint❌ Power BI 報表伺服器

如需舊版 SQL Server Reporting Services (SSRS) 的相關內容,請參閱 SQL Server 2014 Reporting Services

當您安裝 SQL Server 2016 Reporting Services SharePoint 模式時,系統就會安裝 PowerShell Cmdlet 以支援 SharePoint 模式的報表伺服器。 這些指令程式涵蓋三個功能類別。

  • 安裝 Reporting Services SharePoint 共用服務和 Proxy。

  • 佈建和管理 Reporting Services 服務應用程式和相關聯 Proxy。

  • 管理 Reporting Services 功能,例如延伸模組和加密金鑰。

注意

SQL Server 2016 後即不再提供 Reporting Services 與 SharePoint 的整合。

指令程式摘要

若要執行 Cmdlet,您需要開啟 SharePoint 管理命令介面。 您也可以使用 Microsoft Windows 隨附的圖形化使用者介面編輯器 Windows PowerShell 整合式指令碼環境 (ISE) 。 如需詳細資訊,請參閱 Starting Windows PowerShell on Windows Server。 在下列 Cmdlet 摘要中,服務應用程式「資料庫」參考是指 Reporting Services 服務應用程式建立和使用的所有資料庫。 其中包括組態、警示和暫時資料庫。

當您輸入 PowerShell 範例時,將會看到類似下面的錯誤訊息:

  • Install-SPRSService:「Install-SPRSService」一詞無法辨識為
    Cmdlet、函數、指令檔或可執行程式的名稱。 請檢查名稱拼字,如果名稱含有路徑,請確認路徑正確,然後再試一次。

發生以下其中一個問題:

  • Reporting Services SharePoint 模式未安裝,因此 Reporting Services Cmdlet 也未安裝。

  • 您已在 Windows PowerShell 或 Windows PowerShell ISE 中執行 PowerShell 命令,而不是在 SharePoint 管理命令介面中執行。 使用 SharePoint 管理命令介面,或是透過以下命令將 SharePoint 嵌入式管理單元加入至 Windows PowerShell 視窗:

    Add-PSSnapin Microsoft.SharePoint.PowerShell  
    

如需詳細資訊,請參閱 Use Windows PowerShell to administer SharePoint 2013

開啟 SharePoint 管理命令介面並執行 Cmdlet

  1. 選取 [啟動] 按鈕。

  2. 選取 [Microsoft SharePoint 產品] 群組。

  3. 選取 [SharePoint 管理命令介面]

若要檢視 Cmdlet 的命令列說明,請在 PowerShell 命令提示字元中使用 PowerShell 'Get-Help' 命令。 例如:

Get-Help Get-SPRSServiceApplicationServers

共用服務和 Proxy Cmdlet

下表包含用於 Reporting Services SharePoint 共用服務的 PowerShell Cmdlet。

Cmdlet 描述
Install-SPRSService 安裝及註冊或是解除安裝 Reporting Services 共用服務。 只有在擁有 SharePoint 模式之 SQL Server Reporting Services 安裝的電腦上才可以執行這項動作。 針對安裝會進行兩項作業:

-Reporting Services 服務會安裝在伺服器陣列中。

-Reporting Services 服務執行個體會安裝到目前的電腦上。

針對解除安裝會進行兩項作業:

-Reporting Services 服務會從目前的電腦解除安裝。

-Reporting Services 服務會從伺服器陣列解除安裝。



如果伺服器陣列中有任何其他電腦已安裝 Reporting Services 服務,或者依然有 Reporting Services 服務應用程式在伺服器陣列中執行,則會顯示警告訊息。
Install-SPRSServiceProxy 在 SharePoint 伺服器陣列中安裝及註冊或是解除安裝 Reporting Services 服務 Proxy。
Get-SPRSProxyUrl 取得用來存取 Reporting Services 服務的 URL。
Get-SPRSServiceApplicationServers 在包含 Reporting Services 共用服務安裝的本機 SharePoint 伺服器陣列中取得所有伺服器。 這個 Cmdlet 對於 Reporting Services 升級很有用,可判斷哪些伺服器執行共用服務因此需要升級。

服務應用程式和 Proxy Cmdlet

下表包含用於 Reporting Services 服務應用程式及其相關聯 Proxy 的 PowerShell Cmdlet。

Cmdlet 描述
Get-SPRSServiceApplication 取得一或多個 Reporting Services 服務應用程式物件。
New-SPRSServiceApplication 建立新的 Reporting Services 服務應用程式與相關聯的資料庫。

LogonType 參數:指定報表伺服器會使用 SSRS 應用程式集區帳戶或是 SQL Server 登入來存取報表伺服器資料庫。 有效值為:

0 Windows 驗證

1 SQL Server

2 應用程式集區帳戶 (預設)
Remove-SPRSServiceApplication 移除指定的 Reporting Services 服務應用程式。 此 Cmdlet 也會移除相關聯的資料庫。
Set-SPRSServiceApplication 編輯現有 Reporting Services 服務應用程式的屬性。
New-SPRSServiceApplicationProxy 建立新的 Reporting Services 服務應用程式 Proxy。
Get-SPRSServiceApplicationProxy 取得一個或多個 Reporting Services 服務應用程式 Proxy。
Dismount-SPRSDatabase 為 Reporting Services 服務應用程式卸載服務應用程式資料庫。
Remove-SPRSDatabase 為 Reporting Services 服務應用程式移除服務應用程式資料庫。
Set-SPRSDatabase 設定與 Reporting Services 服務應用程式相關聯之資料庫的屬性。
Mount-SPRSDatabase 掛載 Reporting Services 服務應用程式的資料庫。
New-SPRSDatabase 為指定的 Reporting Services 服務應用程式建立新的服務應用程式資料庫。
Get-SPRSDatabaseCreationScript 針對 Reporting Services 服務應用程式將資料庫建立指令碼輸出到畫面。 然後您就可以在 SQL Server Management Studio 中執行指令碼。
Get-SPRSDatabase 取得一個或多個 Reporting Services 服務應用程式資料庫。 使用命令來取得服務應用程式資料庫的識別碼,以便使用 Set-SPRSDatabase Cmdlet 來修改屬性,例如 querytimeout。 請參閱本文中的範例,取得並設定 Reporting Services 應用程式資料庫的屬性
Get-SPRSDatabaseRightsScript 針對 Reporting Services 服務應用程式將資料庫權限指令碼輸出到畫面。 它會提示您提供所需的使用者和資料庫,然後傳回您可執行以修改權限的 Transact SQL。 然後您就可以在 SQL Server Management Studio 中執行這個指令碼。
Get-SPRSDatabaseUpgradeScript 將資料庫升級指令碼輸出至畫面。 指令碼會將 Reporting Services 服務應用程式資料庫升級至目前 Reporting Services 安裝的資料庫版本。

Reporting Services 自訂功能 Cmdlet

Cmdlet 描述
Update-SPRSEncryptionKey 為指定的 Reporting Services 服務應用程式更新加密金鑰,並重新加密其資料。
Restore-SPRSEncryptionKey 為 Reporting Services 服務應用程式還原之前備份的加密金鑰。
Remove-SPRSEncryptedData 為指定的 Reporting Services 服務應用程式刪除加密的資料。
Backup-SPRSEncryptionKey 為指定的 Reporting Services 服務應用程式備份加密金鑰。
New-SPRSExtension 向 Reporting Services 服務應用程式註冊新的延伸模組。
Set-SPRSExtension 設定現有 Reporting Services 延伸模組的屬性。
Remove-SPRSExtension 從 Reporting Services 服務應用程式中移除延伸模組。
Get-SPRSExtension 為 Reporting Services 服務應用程式取得一個或多個 Reporting Services 延伸模組。

有效值為:



遞送

DeliveryUI

轉譯

資料

安全性

驗證

EventProcessing

ReportItems

設計師

ReportItemDesigner

ReportItemConverter

ReportDefinitionCustomization
Get-SPRSSite 根據是否啟用 "ReportingService" 功能取得 SharePoint 網站。 根據預設,將會傳回啟用 "ReportingService" 功能的網站。

基本範例

傳回名稱中包含 'SPRS' 的 Cmdlet 清單。 此清單是完整的 Reporting Services Cmdlet 清單。

Get-command -noun *SPRS*  

或者透過更詳細的資訊,傳送到名為 commandlist.txt 的文字檔。

Get-command -noun *SPRS* | Select name, definition | Format-List | Out-File c:\commandlist.txt  

安裝 Reporting Services SharePoint 服務和服務 Proxy。

Install-SPRSService  
Install-SPRSServiceProxy  

啟動 Reporting Services 服務。

get-spserviceinstance -all |where {$_.TypeName -like "SQL Server Reporting*"} | Start-SPServiceInstance  

在 SharePoint 管理命令介面中輸入下列命令,即可從記錄檔傳回已篩選過的資料列清單。 此命令將會篩選包含「ssrscustomactionerror」的行。 這個範例會查看安裝 rssharepoint.msi 時建立的記錄檔。

Get-content -path C:\Users\testuser\AppData\Local\Temp\rs_sp_0.log | select-string "ssrscustomactionerror"  

詳細範例

除了下列範例之外,另請參閱步驟 1 到 4 的 Windows PowerShell 指令碼文章中的「Windows PowerShell 指令碼」一節。

建立 Reporting Services 服務應用程式和 Proxy

這個範例指令碼會完成下列工作:

  1. 建立 Reporting Services 服務應用程式和 Proxy。 此指令碼會假設應用程式集區 "My App Pool" 已存在。

  2. 將 Proxy 加入至預設 Proxy 群組。

  3. 將服務應用程式存取權授與連接埠 80 Web 應用程式的內容資料庫。 此指令碼會假設網站 https://sitename 已存在。

# Create service application and service application proxy  
$appPool = Get-SPServiceApplicationPool "My App Pool"  
$serviceApp = New-SPRSServiceApplication "My RS Service App" -ApplicationPool $appPool  
$serviceAppProxy = New-SPRSServiceApplicationProxy -Name "My RS Service App Proxy" -ServiceApplication $serviceApp  
  
# Add service application proxy to default proxy group.  Any web application that uses the default proxy group will now be able to use this service application.  
Get-SPServiceApplicationProxyGroup -default | Add-SPServiceApplicationProxyGroupMember -Member $serviceAppProxy  
  
# Grant application pool account access to the port 80 web application's content database.  
$webApp = Get-SPWebApplication "https://sitename"  
$appPoolAccountName = $appPool.ProcessAccount.LookupName()  
$webApp.GrantAccessToProcessIdentity($appPoolAccountName)  
  

檢閱及更新 Reporting Services 傳遞延伸模組

下列 PowerShell 指令碼範例會更新服務應用程式 My RS Service App 之報表伺服器電子郵件傳遞延伸模組的設定。 更新 SMTP 伺服器 (<email server name>) 和 FROM 電子郵件別名 (<your FROM email address>) 的值。

$app=get-sprsserviceapplication -Name "My RS Service App"  
$emailCfg = Get-SPRSExtension -identity $app -ExtensionType "Delivery" -name "Report Server Email" | select -ExpandProperty ConfigurationXml   
$emailXml = [xml]$emailCfg   
$emailXml.SelectSingleNode("//SMTPServer").InnerText = "<email server name>"  
$emailXml.SelectSingleNode("//SendUsing").InnerText = "2"  
$emailXml.SelectSingleNode("//SMTPAuthenticate").InnerText = "2"  
$emailXml.SelectSingleNode("//From").InnerText = '<your FROM email address>'  
Set-SPRSExtension -identity $app -ExtensionType "Delivery" -name "Report Server Email" -ExtensionConfiguration $emailXml.OuterXml  

在上述範例中,如果您不知道服務應用程式的確實名稱,可以重新撰寫第一個陳述式,依據搜尋部分名稱的結果取得服務應用程式。 例如:

$app=get-sprsserviceapplication | where {$_.name -like " ssrs_testapp *"}  

下列腳本會針對名為「Reporting Services Application」的服務應用程式,傳回報表伺服器電子郵件傳遞延伸模組目前的設定值。第一個步驟會將變數 $app 的值設定為名稱為「My RS Service App」的服務應用程式的物件

第二個陳述式將取得變數 $app 中服務應用程式物件的「報表伺服器電子郵件」傳遞延伸模組,並且選取 configurationXML。

$app=get-sprsserviceapplication -Name "Reporting Services Application"  
Get-SPRSExtension -identity $app -ExtensionType "Delivery" -name "Report Server Email" | select -ExpandProperty ConfigurationXml  

您也可以將上述兩個陳述式重新撰寫成一個:

get-sprsserviceapplication -Name "Reporting Services Application" | Get-SPRSExtension -ExtensionType "Delivery" -name "Report Server Email" | select -ExpandProperty ConfigurationXml  

取得及設定 Reporting Service 應用程式資料庫的屬性

下列範例一開始傳回資料庫與屬性的清單,您可以用來決定之後提供給 set 命令的資料庫 GUID (識別碼)。 如需屬性的完整清單,請使用 Get-SPRSDatabase | format-list

get-SPRSDatabase | select id, querytimeout,connectiontimeout, status, server, ServiceInstance   

以下輸出是範例。 決定您要修改之資料庫的識別碼,並在 SET Cmdlet 中使用該識別碼。

  • Id : 56f8d1bc-cb04-44cf-bd41-a873643c5a14

    QueryTimeout : 120

    ConnectionTimeout : 15

    Status : Online

    Server : SPServer Name=uetestb01

    ServiceInstance : SPDatabaseServiceInstance

Set-SPRSDatabase -identity 56f8d1bc-cb04-44cf-bd41-a873643c5a14 -QueryTimeout 300  

若要確認是否已設定值,請再執行一次 GET Cmdlet。

Get-SPRSDatabase -identity 56f8d1bc-cb04-44cf-bd41-a873643c5a14 | select id, querytimeout,connectiontimeout, status, server, ServiceInstance  

列出 Reporting Services 資料延伸模組

下列範例會在每一個 Reporting Services 服務應用程式中執行迴圈,並列出每一個應用程式目前的資料延伸模組。

$apps = Get-SPRSServiceApplication  
foreach ($app in $apps)   
{  
Write-host -ForegroundColor "yellow" Service App Name $app.Name  
Get-SPRSExtension -identity $app -ExtensionType "Data" | select name,extensiontype | Format-Table -AutoSize  
}  

範例輸出︰

  • Name ExtensionType

    ---- -------------

    SQL Data

    SQLAZURE Data

    SQLPDW Data

    OLEDB Data

    OLEDB-MD Data

    ORACLE Data

    ODBC Data

    XML Data

    SHAREPOINTLIST Data

變更並列出 Reporting Services 訂閱擁有者

請參閱使用 PowerShell 變更及列出 Reporting Services 訂閱擁有者並執行訂閱

使用 PowerShell 變更及列出 Reporting Services 訂閱擁有者並執行訂閱
檢查清單:使用 PowerShell 驗證 PowerPivot for SharePoint (機器翻譯)
取得 SQL Server PowerShell 說明

更多問題嗎? 請嘗試詢問 Reporting Services 論壇