Como usar o Powershell 2 Get-WmiObject para encontrar uma instância do SQL Server Reporting Services (SQL2008) no Windows Server 2008 R2

1

Estou tentando usar o comando 2 "Get-WmiObject" do powershell para encontrar a instância do serviço de geração de relatórios usando este comando

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

O ERRO VOLTA

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

NOTAS

  • Este é o Powershell 2
  • SO = Windows Server 2008 R2 RC (x64)
  • SQL = SQL 2008 SP1 (x64)
  • O Reporting Services está instalado e funciona - tem vários relatórios em execução)
  • Tudo está sendo executado na mesma caixa (o script, SQL, SSRS)
  • Link para informações do WMI para o SSRS: link
  • Eu tentei (adivinhar) diferentes variações no namespace, mas nada funcionou

A RESPOSTA (2009-06-22)

O código abaixo localiza a instância e a coloca em $ 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
    
por user2666 19.06.2009 / 20:39

3 respostas

1

Usando o script WmiExplorer.ps1 Eu posso ver o nome da instância em __NAMESPACE e esta consulta retorna o nome da minha instância:

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

Para chegar ao MSReporterServer_Instance você deve fornecer o nome da instância neste exemplo. O nome da minha instância é RS_SQL2K8:

gwmi -class "MSReportServer_Instance" -namespace "root\Microsoft\SqlServer\ReportServer\RS_SQL2K8\v10"
    
por 22.06.2009 / 21:11
1

Primeiro, é uma aula válida?

Tente isto: PS > get-wmiobject -list -nome-espaço "raiz \ Microsoft \ SqlServer"

Essa classe é listada?

Atalho: PS > get-wmiobject -list -nome-espaço "raiz \ Microsoft \ SqlServer" | onde {$ _. Name -eq "MSReportServer_Instance"}

Eu tenho uma VM executando o Server 2008 com o SQL 2008 e posso tentar fazer isso amanhã.

Se você não tiver certeza do namespace: PS > Get-WmiObject -Namespace "root" -Class "__NAMESPACE" | Nome da lista de formatos

(De: link )

    
por 22.06.2009 / 04:46
1

Se o que você está tentando fazer requer o WMI, isso pode estar faltando, mas o SQL Server 2008 vem com extensões gerenciadas, o que significa que a maioria das tarefas de automação não precisa mais ser executada com o WMI.

Por exemplo, em uma máquina com as extensões de cliente instaladas, selecione o banco de dados com aberto no powershell clique com o botão direito do mouse no comando ou carregue as extensões em qualquer sessão do powershell ( link ) e você pode fazer o seguinte:

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

Agora você pode gerenciar os objetos de banco de dados da mesma forma que manipularia seu sistema de arquivos locla no PowerShell (por exemplo, tente executar dir. | Get-Member para ver algumas propriedades para interagir).

    
por 08.07.2009 / 19:20