Reporting Services WMI プロバイダーへのアクセス

Reporting Services WMI プロバイダーは、ネイティブ モードのレポート サーバー インスタンスの管理に使用できる 2 つの WMI クラスを、スクリプトを通じて公開します。

重要

SQL Server 2012 (11.x) リリース以降では、WMI プロバイダーはネイティブ モードのレポート サーバーに対してのみサポートされています。 SharePoint モードのレポート サーバーは、SharePoint サーバーの全体管理ページおよび PowerShell スクリプトを使用して管理できます。

クラス 名前空間 説明
MSReportServer_Instance root\Microsoft\SqlServer\ReportServer\RS_<エンコードされたインスタンス名>\v13 インストールされているレポート サーバーに接続するための基本情報をクライアントに提供します。
MSReportServer_ConfigurationSetting root\Microsoft\SqlServer\ReportServer\RS_<エンコードされたインスタンス名>\v13\Admin レポート サーバー インスタンスのインストール パラメーターとランタイム パラメーターを表します。 これらのパラメーターはレポート サーバーの構成ファイルに格納されています。

** 重要 ** このクラスは管理者権限でのみアクセス可能です。

上記のクラスの各インスタンスは、レポート サーバー インスタンスごとに作成されます。 レポート サーバーによって公開されている WMI オブジェクト (.NET Framework 自体によって公開されている WMI プログラミング インターフェイスを含む) へは、Microsoft または Microsoft 以外の任意のツールを使用してアクセスできます。 この記事では、PowerShell コマンド Get-WmiObjectを使用した、WMI クラスのインスタンスに対するアクセス方法と使用方法について説明します。

名前空間文字列内のインスタンス名の確認

Reporting Services WMI クラスの名前空間パスに含まれるインスタンス名は、名前付き Reporting Services インスタンスのインストール時に指定したインスタンス名のエンコードです。 つまり、インスタンス名に含まれる特殊文字はエンコードされます。 たとえば、アンダースコア (_) は _5f としてエンコードされるので、My_Instance のインスタンス名は WMI 名前空間パス内では My_5fInstance としてエンコードされます。

使用しているレポート サーバー インスタンスについて、WMI 名前空間パス内でのエンコード後のインスタンス名の一覧を表示するには、次の PowerShell コマンドを使用します。

PS C:\windows\system32> Get-WmiObject -namespace root\Microsoft\SqlServer\ReportServer  -class __Namespace -ComputerName hostname | select Name  

PowerShell を使用した WMI クラスへのアクセス

WMI クラスにアクセスするには、次のコマンドを実行します。

PS C:\windows\system32> Get-WmiObject -namespace <namespacename> -class <classname> -ComputerName <hostname>  

たとえば、ホスト myrshost の既定のレポート サーバー インスタンス上で MSReportServer_ConfigurationSetting クラスにアクセスするには、次のコマンドを実行します。 このコマンドを正常に実行するには、既定のレポート サーバー インスタンスが myrshost 上にインストールされている必要があります。

PS C:\windows\system32> Get-WmiObject -namespace "root\Microsoft\SqlServer\ReportServer\RS_MSSQLSERER\v11\Admin" -class MSReportServer_ConfigurationSetting -ComputerName myrshost  

このコマンド構文は、すべてのクラス プロパティ名と値を出力します。 既定のレポート サーバー インスタンス (RS_MSSQLSERVER) の名前空間内のクラスにアクセスしている場合でも、MSReportServer_ConfigurationSetting クラスのすべてのインスタンスが返されます。 たとえば、myrshost は、既定のレポート サーバー インスタンスと SHAREPOINT という名前のレポート サーバー インスタンスと共にインストールされる場合があります。 このコマンドは、2 つの WMI オブジェクトを返し、両方のレポート サーバー インスタンスのプロパティ名と値を出力します。

複数のインスタンスが返される場合、特定のクラス インスタンスが返されるようにするには、-Filter パラメーターを使用して、固有の値 (InstanceName など) を持つプロパティで結果をフィルター処理します。 たとえば、既定のレポート サーバー インスタンスの WMI オブジェクトのみを返すには、次のコマンドを使用します。

PS C:\windows\system32> Get-WmiObject -namespace "root\Microsoft\SqlServer\ReportServer\RS_MSSQLServer\v13\Admin" -class MSReportServer_ConfigurationSetting -ComputerName myrshost -filter "InstanceName='MSSQLSERVER'"  

使用可能なメソッドとプロパティの照会

特定の Reporting Services WMI クラスで使用できるメソッドとプロパティを確認するには、Get-WmiObject から Get-Member へと結果をパイプします。 次に例を示します。

PS C:\windows\system32> Get-WmiObject -namespace "root\Microsoft\SqlServer\ReportServer\RS_MSSQLServer\v13\Admin" -class MSReportServer_ConfigurationSetting -ComputerName myrshost | Get-Member  

WMI のメソッドまたはプロパティの使用

Reporting Services クラスに対する WMI オブジェクトを用意し、使用可能なメソッドとプロパティを確認したら、それらのメソッドとプロパティを使用できます。 たとえば、SHAREPOINT という名前付きレポート サーバー インスタンスを SharePoint 統合モードで作成した場合は、次のコマンド シーケンスを使用して、SharePoint サーバーの全体管理サイトの URL を取得できます。

PS C:\windows\system32> $rsconfig = Get-WmiObject -namespace "root\Microsoft\SqlServer\ReportServer\RS_MSSQLServer\v13\Admin" -class MSReportServer_ConfigurationSetting -ComputerName myrshost -filter "InstanceName='SHAREPOINT'"  
PS C:\windows\system32> $rsconfig.GetAdminSiteUrl()