Executando o comando do IIS no servidor remoto via Powershell

6

Estou tentando verificar se existe um pool de aplicativos do IIS em um servidor remoto usando um script do PowerShell. O comando que estou executando é:

test-path "IIS:\AppPools\DefaultAppPool"

Se eu executar este script diretamente no servidor IIS em questão, recebo uma resposta de "True", de modo que isso me diz que tenho o gerenciamento do IIS configurado corretamente no PowerShell. No entanto, quando eu corro o seguinte script de um servidor remoto, recebo uma resposta de "False"

invoke-command -ComputerName IISSERVER -ScriptBlock { test-path "IIS:\AppPools\DefaultAppPool" }

Eu sei que o remoting do PowerShell está configurado corretamente porque eu posso executar o seguinte comando e obter uma lista de arquivos

invoke-command -ComputerName IISSERVER -ScriptBlock { get-childitems "c:\" }

Então, por que estou recebendo a resposta errada sobre a existência do pool de aplicativos?

    
por Paul Hunt 19.06.2013 / 18:17

1 resposta

5

Isso ocorre porque a sessão remota do PowerShell não inclui a unidade "IIS:" do PowerShell. (Tente executar "Get-PSDrive" localmente e, em seguida, através de Invoke-Command, para ver a diferença).

A unidade "IIS:" quase certamente está sendo adicionada pelo snap-in WebAdministration PS quando você está executando o Powershell localmente no servidor IIS, seja porque você está iniciando o PowerShell a partir de um atalho especial específico do IIS ou porque O script de perfil do PowerShell está sendo executado e está sendo carregado.

Você deve obter os resultados que está procurando adicionando explicitamente o snap-in WebAdministration à sessão remota (que cria a unidade "IIS:") alterando seu Invoke-Command para procurar assim:

invoke-command -ComputerName IISSERVER -ScriptBlock { Add-PSSnapin WebAdministration; test-path "IIS:\AppPools\DefaultAppPool" }
    
por 27.06.2013 / 17:09