2
respostas

Comando Get-RDRemoteApp falha em uma PSSession

Boa tarde, Guilherme.

Esses cursos de PowerShell foram bastante esclarecedores.

Hoje me deparei com a necessidade de obter a lista das aplicações publicadas em nosso servidor de área de trabalho remota do Windows. Após alguma pesquisa, descobri que o cmdlet "Get-RDRemoteApp" supre essa necessidade.

Rodando o PowerShell com privilégios administrativos em minha estação de trabalho, tentei usar as sessões do PowerShell da seguinte forma:

  1. Conectei, com sucesso, ao servidor RDS:

    Enter-PSSession -ComputerName SERVIDOR -Credential DOMINIO\administrador

    Resultado: sucesso!

  2. Uma vez conectado ao meu servidor RDS (o prompt passou a exibir o nome do servidor entre colchetes). Executei o comando para obter a listagem desejada:

    Get-RDRemoteApp

    Resultado: obtive a mensagem de erro "Get-RDRemoteApp : A implantação dos Serviços de Área de Trabalho Remota não existe em <SERVIDOR.DOMINIO>. Essa operação pode ser executada após a criação de uma implantação..."

  3. Para testar a conexão, executei os comandos HOSTNAME.EXE e gci (em uma pasta do servidor) e obtive as respostas esperadas.

  4. Ainda conectado ao servidor, testei o Invoke-Command:

    Invoke-Command {Get-RDRemoteApp}

    Resultado: erro semelhante ao do passo 3., acima.

Por fim, conectei-me àquele servidor através da Área de Trabalho Remota do Windows com a mesma credencial utilizada no passo "1.". Já no servidor, abri o prompt do PowerShell e executei o comando:

Get-RDRemoteApp

Resultado: Sucesso! Obtive a listagem esperada.

Você sabe por que o cmdlet Get-RDRemoteApp teve aquele comportamento quando executado via PSSession?

A impressão é que o comando foi executado no contexto da minha estação. Isso explicaria aquela mensagem de erro. Mas, conforme mencionei, eu estava em uma sessão interativa do PowerShell.

Grato.

2 respostas

Opa, Hernan. Tudo bom?

Realmente, existem alguns cmdlets que não funcionam em uma sessão remota. Nunca usei, mas, pesquisei um pouco e encontrei em fóruns outras pessoas tendo problemas com esse cmdlet e ps-session.

Você chegou a testar o Invoke-Command sem estar dentro de uma sessão? Ele aceita como argumento o nome da máquina que deve executar. Seria algo como:

Invoke-Command -ComputerName $server -ScriptBlock { Get-RDRemoteApp }

Pronto, Guilherme.

Testei o "Invoke-Command -ComputerName..." e também não funcionou.

Mas, ao menos, já sei que alguns cmdlets não funcionam em PS-Session.

Obrigado.