Gostaria de poder verificar rapidamente se um site está on-line depois de fazer login na área de trabalho do Windows Server 2008 R2 (x64). Eu preferiria fazer isso com apenas um clique simples ou duplo (ou melhor, sem clicar) do que ter que navegar pela estrutura de árvore do Gerenciador do IIS.
Eu posso criar um atalho para o Gerenciador do IIS e colocá-lo na minha área de trabalho, mas como forçá-lo a abrir a exibição SERVERNAME / Sites em vez de clicar várias vezes para chegar lá?
Se não pode ser feito, existe alguma outra maneira sem fazer programação que eu posso colocar um indicador "online / offline" (de preferência na bandeja do sistema ou na área de trabalho) para cada site que eu quero colocar lá?
Se eu tiver que recorrer à programação para esse recurso aparentemente simples, como posso obter o status (iniciado ou interrompido) de um site específico do IIS a ser exibido em meu programa personalizado? Qual API, arquivo ou entrada de registro eu preciso ler para obter essas informações de status?
Atualizar
Eu descobri outra pessoa com um arquivo .bat que usava o utilitário IIS do appcmd.exe . Depois de algumas tentativas e erros depois de ler os documentos MSDN sobre o utilitário appcmd.exe, consegui juntar o seguinte arquivo .bat que faz o trabalho muito bem. A tarefa em mãos era simplesmente obter um estado de site (ou de vários sites) em dois cliques ou menos da área de trabalho.
@echo off
:Status
Set STATUS1=MAINTENANCE
FOR /F "tokens=*" %%A IN ('%SystemRoot%\System32\inetsrv\appcmd list site /site.name:www.mysite1.com /text:state ^| FIND "Started"') DO SET STATUS1=STARTED
Set STATUS2=MAINTENANCE
FOR /F "tokens=*" %%A IN ('%SystemRoot%\System32\inetsrv\appcmd list site /site.name:www.mysite2.com /text:state ^| FIND "Started"') DO SET STATUS2=STARTED
echo www.mysite1.com: %STATUS1%
echo www.mysite2.com: %STATUS2%
pause
Infelizmente, o utilitário não está documentado muito bem - eu tive que mexer com ele um pouco para obter o resultado que eu queria.
%SystemRoot%\System32\inetsrv\appcmd list site /site.name:www.mysite1.com
Esta é a linha que obtém o status, mas executá-lo assim retorna um monte de outras coisas também. Então, para obter apenas o status e nada mais, outro parâmetro deve ser adicionado.
%SystemRoot%\System32\inetsrv\appcmd list site /site.name:www.mysite1.com /text:state
Seguindo o exemplo no link, também consegui criar um menu para iniciar e parar instantaneamente os sites, pressionando uma tecla e, em seguida, ENTER, e depois exibindo o status dos sites novamente - tudo de um .bat arquivo.