本主题正在进行中。
WMI 提供程序概述
用于在本主题中显示的代码示例中获取 Reporting Services 相关信息的命名空间是在 Microsoft .NET Framework 中找到的 System.Management 命名空间。 System.Management 命名空间提供一组托管代码类,.NET Framework 应用程序可以通过这些类访问和作管理信息。 有关使用 System.Management 命名空间使用 Reporting Services WMI 类的详细信息,请参阅 Microsoft .NET Framework SDK 中的“使用 System.Managment 访问管理信息”。
查找报表服务器实例
查找报表服务器安装信息的首选方法是通过 WMI 实例集合进行枚举。 下面的示例演示如何通过创建集合并循环访问集合来显示属性来查找每个报表服务器实例上的属性。
Imports System
Imports System.Management
Imports System.IO
Module Module1
Sub Main()
Const WmiNamespace As String = "\\<ServerName>\root\Microsoft\SqlServer\ReportServer\<InstanceName>\v10\Admin"
Const WmiRSClass As String = _
"\\<ServerName>\root\Microsoft\SqlServer\ReportServer\<InstanceName>\v10\admin:MSReportServer_ConfigurationSetting"
Dim serverClass As ManagementClass
Dim scope As ManagementScope
scope = New ManagementScope(WmiNamespace)
'Connect to the Reporting Services namespace.
scope.Connect()
'Create the server class.
serverClass = New ManagementClass(WmiRSClass)
'Connect to the management object.
serverClass.Get()
If serverClass Is Nothing Then Throw New Exception("No class found")
'Loop through the instances of the server class.
Dim instances As ManagementObjectCollection = serverClass.GetInstances()
Dim instance As ManagementObject
For Each instance In instances
Console.Out.WriteLine("Instance Detected")
Dim instProps As PropertyDataCollection = instance.Properties
Dim prop As PropertyData
For Each prop In instProps
Dim name As String = prop.Name
Dim val As Object = prop.Value
Console.Out.Write("Property Name: " + name)
If val Is Nothing Then
Console.Out.WriteLine(" Value: <null>")
Else
Console.Out.WriteLine(" Value: " + val.ToString())
End If
Next
Next
Console.WriteLine("--- Press any key ---")
Console.ReadKey()
End Sub
End Module
using System;
using System.Management;
using System.IO;
[assembly: CLSCompliant(true)]
class Class1
{
[STAThread]
static void Main(string[] args)
{
const string WmiNamespace = @"\\<ServerName>\root\Microsoft\SqlServer\ReportServer\<InstanceName>\v10\Admin";
const string WmiRSClass =
@"\\<ServerName>\root\Microsoft\SqlServer\ReportServer\<InstanceName>\v10\admin:MSReportServer_ConfigurationSetting";
ManagementClass serverClass;
ManagementScope scope;
scope = new ManagementScope(WmiNamespace);
// Connect to the Reporting Services namespace.
scope.Connect();
// Create the server class.
serverClass = new ManagementClass(WmiRSClass);
// Connect to the management object.
serverClass.Get();
if (serverClass == null)
throw new Exception("No class found");
// Loop through the instances of the server class.
ManagementObjectCollection instances = serverClass.GetInstances();
foreach (ManagementObject instance in instances)
{
Console.Out.WriteLine("Instance Detected");
PropertyDataCollection instProps = instance.Properties;
foreach (PropertyData prop in instProps)
{
string name = prop.Name;
object val = prop.Value;
Console.Out.Write("Property Name: " + name);
if (val != null)
Console.Out.WriteLine(" Value: " + val.ToString());
else
Console.Out.WriteLine(" Value: <null>");
}
}
Console.WriteLine("\n--- Press any key ---");
Console.ReadKey();
}
}