Назад | Перейти на главную страницу

Ярлык для открытия диспетчера IIS 7, чтобы он по умолчанию отображал представление (статус) «Сайты»?

Я хотел бы быстро проверить, находится ли сайт в сети после входа на рабочий стол Windows Server 2008 R2 (x64). Я бы предпочел иметь возможность сделать это всего одним щелчком мыши или дважды щелкнуть мышью (или, что еще лучше, вообще не щелкнув), чем перемещаться по древовидной структуре диспетчера IIS.

Я могу создать ярлык для диспетчера IIS и поместить его на свой рабочий стол, но как заставить его открываться в представлении SERVERNAME / Sites вместо того, чтобы нажимать несколько раз, чтобы попасть туда?

Если это невозможно сделать, есть ли другой способ без программирования, чтобы я мог разместить индикатор «онлайн / офлайн» (желательно в панели задач или на рабочем столе) для каждого сайта, который я хочу разместить там?

Если мне приходится прибегать к программированию для этой, казалось бы, простой функции, как я могу получить статус (запущен или остановлен) для определенного веб-сайта IIS, который будет отображаться в моей пользовательской программе? Какой API, файл или запись в реестре мне нужно прочитать, чтобы получить эту информацию о статусе?

Обновить

Я обнаружил кого-то еще с .bat файл, который использовал служебную программу IIS appcmd.exe.. После некоторых проб и ошибок после прочтения документов MSDN об утилите appcmd.exe я смог собрать следующий файл .bat, который отлично справляется со своей задачей. Задача заключалась в том, чтобы просто получить состояние сайта (или нескольких сайтов) с рабочего стола за 2 клика или меньше.

@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

К сожалению, утилита не очень хорошо документирована - мне пришлось немало повозиться с ней, чтобы получить желаемый результат.

%SystemRoot%\System32\inetsrv\appcmd list site /site.name:www.mysite1.com

Это строка, которая получает статус, но при ее запуске также возвращается множество других вещей. Итак, чтобы просто получить статус и ничего больше, необходимо добавить еще один параметр.

%SystemRoot%\System32\inetsrv\appcmd list site /site.name:www.mysite1.com /text:state

Следуя примеру в ссылке, я также смог составить меню, чтобы мгновенно запускать и останавливать сайты, нажав клавишу и затем ENTER, а затем он снова отображает состояние сайтов - все из одного файла .bat.

Если у вас включены «Сценарии и инструменты управления IIS», вы можете использовать PowerShell для отображения статуса сайтов. Я использую такой сценарий в специальном окне PowerShell:

do
{
     clear-host
     Get-ChildItem IIS:\sites | format-table state, name
     $curPos = $Host.UI.RawUI.CursorPosition
     $ou = (Get-Date).ToString("HH:mm:ss")
     $ou = "  " +  $ou + " - Press CRTL+C to terminate"
     $Host.UI.Write($ou)
     $Host.UI.RawUI.CursorPosition=$curPos 
     Start-Sleep -Seconds 5
} until ($false)

Линия

Get-ChildItem IIS: \ sites | состояние таблицы форматирования

выполняет реальную работу, остальное только для предотвращения прокрутки вывода. Он обновляется каждые пять секунд.

Ты пробовал appcmd.exe list sites, вывод будет примерно таким

SITE "Default Web Site" (id:1,bindings:http/*:80:,state:Started)

Вы можете сослаться на статья

Сожалею, но краткий ответ - нет. Ознакомьтесь со ссылкой на конфигурацию здесь: http://www.iis.net/configreference или ссылку на командлет здесь: http://technet.microsoft.com/en-us/library/ee790599.aspx

Я проверил XML-файл, но нет ничего, что позволяло бы вам выбрать, с чего начать. Им действительно стоит это добавить.