我正在尝试使用 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)
- Reporting Services 已安装并运行 - 运行多个报告)
- 一切都在同一个盒子上运行(脚本、SQL、SSRS)
- SSRS 的 WMI 信息链接:http: //msdn.microsoft.com/en-us/library/ms152858.aspx
- 我已经尝试(猜测)命名空间的不同变体,但没有任何效果
答案 (2009-06-22)
下面的代码找到实例并将其放入$rs_instance
$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
首先,它是一个有效的类吗?
试试这个: 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" | 格式列表名称
(来自:http ://www.eggheadcafe.com/conversation.aspx?messageid=31024041&threadid=31024027 )
使用WmiExplorer.ps1脚本,我可以在 __NAMESPACE 中看到实例名称,并且此查询返回我的实例名称:
要访问 MSReporterServer_Instance,您必须在此示例中提供实例名称,我的实例名称是 RS_SQL2K8:
如果您尝试执行的操作需要 WMI,这可能会忽略重点,但 SQL Server 2008 附带托管扩展,这意味着不再需要使用 WMI 执行大多数自动化任务。
例如,在安装了客户端扩展的机器上,要么选择在 powershell 中打开右键单击上下文菜单命令的数据库,要么 在任何 powershell 会话中加载扩展( http://blogs.msdn.com/mwories/archive/2008/06/ 14/SQL2008_5F00_Powershell.aspx),您可以执行以下操作:
您现在可以像在 PowerShell 中操作 locla 文件系统一样管理数据库对象(例如,尝试运行 dir . | Get-Member 以查看一些要与之交互的属性)。