如何使用 Powershell 2 Get-WmiObject 在 Windows Server 2008 R2 上查找 SQL Server Reporting Services (SQL2008) 实例

如何使用 Powershell 2 Get-WmiObject 在 Windows Server 2008 R2 上查找 SQL Server Reporting Services (SQL2008) 实例

我正在尝试使用 powershell 2 “Get-WmiObject” 命令来使用此命令查找报告服务实例

 get-wmiobject -class "MSReportServer_Instance" -namespace "root\Microsoft\SqlServer\ReportServer"

我得到的错误

Get-WmiObject : Invalid class
At line:1 char:14
+ get-wmiobject <<<<  -class "MSReportServer_Instance" -namespace "root\Microsoft\SqlServer"
    + CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], ManagementException
    + FullyQualifiedErrorId :     GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

笔记

  • 这是 Powershell 2
  • 操作系统 = Windows Server 2008 R2 RC (x64)
  • SQL = SQL 2008 SP1 (x64)
  • 报告服务已安装并运行 - 有多个报告正在运行)
  • 所有内容都在同一个盒子上运行(脚本、SQL、SSRS)
  • SSRS 的 WMI 信息链接:http://msdn.microsoft.com/en-us/library/ms152858.aspx
  • 我尝试过(猜测)命名空间的不同变体,但都没有奏效

答案 (2009-06-22)

下面的代码找到实例并将其放入$rs_实例

$ns = Get-WmiObject -class "__NAMESPACE" -namespace "root\Microsoft\SqlServer\ReportServer"
$rs_instance_name = "root\Microsoft\SqlServer\ReportServer\" + $ns.Name + "\v10"
$rs_instance = Get-WmiObject -class "MSReportServer_Instance" -namespace $rs_instance_name

答案1

使用WmiExplorer.ps1脚本我可以在__NAMESPACE中看到实例名称,并且此查询返回我的实例名称:

gwmi -class "__NAMESPACE" -namespace "root\Microsoft\SqlServer\ReportServer"

要获取 MSReporterServer_Instance,您必须提供实例名称,在此示例中,我的实例名称是 RS_SQL2K8:

gwmi -class "MSReportServer_Instance" -namespace "root\Microsoft\SqlServer\ReportServer\RS_SQL2K8\v10"

答案2

首先,它是一个有效的课程吗?

试试这个:PS>get-wmiobject -list -namespace“root\Microsoft\SqlServer”

这个班级被列入名单了吗?

快捷方式:PS>get-wmiobject -list -namespace "root\Microsoft\SqlServer"|where{$_.name -eq "MSReportServer_Instance"}

我有一台运行 Server 2008 和 SQL 2008 的 VM,明天可以试试这个。

如果您不确定命名空间:PS> Get-WmiObject -Namespace "root" -Class "__NAMESPACE" | Format-List Name

(出自:http://www.eggheadcafe.com/conversation.aspx?messageid=31024041&threadid=31024027

答案3

如果您尝试执行的操作需要 WMI,那么这可能会忽略重点,但 SQL Server 2008 附带托管扩展,这意味着大多数自动化任务不再需要使用 WMI 来执行。

例如,在安装了客户端扩展的计算机上,选择数据库在 powershell 中打开右键单击上下文菜单命令或者 加载扩展在任何 powershell 会话中 (http://blogs.msdn.com/mwories/archive/2008/06/14/SQL2008_5F00_Powershell.aspx),您可以执行以下操作:

PS > cd SQLSERVER
PS > Set-Location \sql\MyServer\ReportServer

您现在可以管理数据库对象,就像在 PowerShell 中操作本地文件系统一样(例如,尝试运行 dir . | Get-Member 以查看一些可以交互的属性)。

相关内容