Я хотел бы быстро проверить, находится ли сайт в сети после входа на рабочий стол 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-файл, но нет ничего, что позволяло бы вам выбрать, с чего начать. Им действительно стоит это добавить.