Управление IIS с использованием IIS 7.0 PowerShell Snap-in

Введение в Windows PowerShell и IIS 7.0

Введение

Windows PowerShell является новой программной оболочкой Microsoft и скриптовым языком. В этой короткой статье даётся краткий обзор Windows PowerShell и IIS7.0. Читая эту статью, вы получите чёткое понимание именно того, что представляет из себя Windows PowerShell, узнаете о взаимосвязи между Windows PowerShell и IIS 7.0, а также откроете для себя некоторые способы, при которых Windows PowerShell упрощает выполнение задач управления IIS.

Представленная здесь информация будет полезна IT-администраторам, разработчикам программного обеспечения, тестировщикам и менеджерам. Даже скептически настроенные читатели будут убеждены в том, что Windows PowerShell является необходимым инструментом.

О программной оболочке Windows PowerShell

Windows PowerShell представляет собой всеобъемлющую программную оболочку следующего поколения от Microsoft, а также скриптовый язык. Рассмотрим Windows PowerShell в качестве значительного апгрейда для старой командной оболочки old cmd.exe и файлов .BAT. Пользователи могут задаться вопросом, зачем нужна новая командная оболочка, если Cmd.exe работает хорошо – и нет времени на изучение ещё одного скриптового языка. Windows PowerShell является улучшенной версией по сравнению с предыдущей оболочкой командной строки от Microsoft со своим языком сценариев. Это означает, что Windows PowerShell легче в использовании, как для простых, так и для сложных задач, и на удивление легко изучается.  

Некоторые улучшения в Windows PowerShell включают в себя:

  • Обновлённый и согласованный язык сценариев
  • Возможность внутреннего регулярного выражения
  • Возможность прямого доступа из командной строки к объектам NET Framework, WMI расширения, а также в реестр Windows.

В данном разделе приводятся конкретные примеры и основные моменты некоторых характеристик Windows PowerShell. В следующих разделах будет рассмотрено взаимодействие Windows PowerShell с IIS 7.0.

Для ознакомления с оболочкой Windows PowerShell взгляните на пример. Рассмотрим скриншот на рисунке 1.

Рисунок 1 - Основы Windows PowerShell

Во-первых, обратите внимание, что оболочка Windows PowerShell выглядит как традиционная командная строка Windows. Используя Windows PowerShell, Вы быстро почувствуете себя вполне естественно за короткий период после перевода оборудования на рабочий режим.

Первая команда имеет вид:


PSC:\> set-location Data

Она вызывает внутреннюю команду, в PowerShell она называется командлет ("команда-пусть"), для изменения текущей рабочего каталога с C:\ на C:\Data. Это функциональный эквивалент старой cd команды (изменение каталога). Можно заметить, что вводя на клавиатуре "set-location" ("определить местоположение") каждый раз при смене текущего каталога осуществляется обширная печать, и это нормально.

Windows PowerShell обладает широким набором псевдонимов "быстрых клавиш", которые можно использовать. Командлет set-location представляет собой псевдоним sl (сокращённый вариант полного имени командлета), а также cd ("старый" способ). В этой статье используется полная версия имён командлета для удобства чтения.

Вторая команда имеет вид:


PS C:\Data> get-childitem Pow*

Тем самым перечисляется содержание в текущем каталоге, который начинается с функции "Pow". При вводе командлетов Windows PowerShell регистр не учитывается, поэтому можно ввести командлет Get-ChildItem или GET-ChildItem. В данной статье используются все строчные буквы. Командлет get-childitem можно вызвать с помощью встроенных псевдонимов dir (для знающих Windows), ls (для пользователей Unix), а также gci для удобства ввода.  

Затем используйте командлет copy-item (копировать пункт) для получения копии каталога Windows PowerShell, включая все подкаталоги, в новом каталоге с именем PSBackup:


PS C:\Data> copy-item 'PowerShell' 'C:\Data\PSBackup' -recurse –force

После чего сразу же удалите только что созданный каталог и всё его содержимое с помощью командлета remove-item (удалить пункт).


PS C:\Data> remove-item PSBackup –recurse

Прибегая к следующей команде, используйте командлет get-content (получить контент) для его извлечения из файла Hello.txt, а затем сохраните контент в новом файле HelloCopy.txt в текущем каталоге через канал данных (с символом '|') к командлету out-file (вывести в файл).


PS C:\Data> get-content 'Hello.txt' | out-file'.\HelloCopy.txt'

Предпоследняя команда использует get-content для отображения содержимого нового файла:


PS C:\Data> get-content HelloCopy.txt

Командлет get-content приблизительно эквивалентен типу (Windows) или cat командам (Unix). Окончание мини-демо с помощью псевдонима sl для изменения рабочего каталога на корневом диске:


PSC:\Data> sl \

Теперь необходимо отметить, если бы всё, что относилось к Windows PowerShell, было выполнено общей навигацией по файловой системе и задачами манипуляции с использованием нового набора команд, не было бы смысла читать материал дальше. Резюме, введение с одним параграфом могло привести к такому неправильному предположению. Однако у Windows PowerShell есть много преимуществ по сравнению со многими текущими оболочками среды.

В заключение этой вступительной части к Windows PowerShell необходимо отметить: Windows PowerShell имеет обучающий шаблон. Новая технология является бесполезной при отсутствии способа её быстрого изучения. Программисты называют этот процесс discoverability (открытостью для изучения). Оболочка Windows PowerShell была разработана с отличными характеристиками открытости изучения, что существенно облегчает данный процесс.

Например, есть возможность получения списка всех командлетов, просто введя get-command в командную строку Windows PowerShell. Можно также получить подробную информацию о конкретной команде, набрав команлет get-help (получить справку), за которой следует имя команды. Обширный опыт преподавания Windows PowerShell для инженеров и менеджеров показывает, что большинство инженеров могут стать специалистами в использовании Windows PowerShell уже с одного дня практики.

Windows PowerShell в обычной среде IIS 7.0

В предыдущем разделе данной статьи был произведён краткий обзор Windows PowerShell. Однако реальные преимущества использования Windows PowerShell исходит из способности этой оболочки взаимодействовать и управлять IIS 7.0. Инженеры, читающие данную статью, могут скептически отнестись к "последнему и самому значительному" заявлению. В этой статье будет кратко рассмотрена способность Windows PowerShell: многие управленческие задачи IIS7.0 можно выполнить с помощью команд и скриптов Windows PowerShell , а также с новым графическим интерфейсом IIS 7.0.

В IIS 7.0 теперь есть возможность реализовывать многие задачи, используя любое из следующих действий:

  • Графический интерфейс пользователя (GUI)
  • Интерактивные команды Windows PowerShell  
  • Скрипты Windows PowerShell

Те пользователи, которые имеют значительный опыт управления программным обеспечением сервера с использованием оболочек и скриптов, не нуждаются в дополнительной мотивации. Другие пользователи, обычно применяющие точно указанные инструменты GUI, могут спросить о возможностях управления IIS 7.0 посредством командной строки или скрипта, если они уже достаточно хорошо управляются с ММС. В конце данной статьи акцентируется внимание на шести значительных преимуществах управления IIS 7.0 с помощью Windows PowerShell.

Ниже приведены некоторые примеры Windows PowerShell, доступные через вебкаст, представленные архитектором Джефри Сновером и менеджером продукта IIS 7.0 Биллом Стейплом. Ссылка на вебкаст https://channel9.msdn.com/).

Предположим, вы хотите изучить связанные с IIS услуги, запущенные на вашем компьютере – задача очень общая. Сначала выполните "GUI approach" (подход GUI) для запуска ММС, а затем разверните на экране категорию Services (Сервис) и Application (Приложение), после чего выберите категорию Services. Результат выглядит как скриншот на рисунке 2.

Рисунок 2 – Использование ММС для получения сервисной информации

Перечислить сервисы Windows, используя Windows PowerShell, довольно легко. Например, из строки Windows PowerShell используйте командлет get-service (получить сервис):


PSC:\> get-service

Это не очень удобно, но предположим, что требуется составить список только тех сервисов, которые начинаются с буквы 'w' и отсортировать их по статусу. Один из способов сделать это:


PS C:\> get-service -include w* | sort-object -propertystatus

Можно интерпретировать эту команду для получения информации обо всех сервисах Windows, а затем отфильтровать только те сервисы, которые начинаются с буквы W'. После чего отсортировать полученный результат в зависимости от статуса службы (запуск, останов, пауза). Результат выглядит как скриншот на рисунке 3.

Рисунок 3 – Использование ММС для получения сервисной информации

Как было указано в предыдущем разделе, можно вводить краткие команды PowerShell. Предшествующую команду можно сократить до:


PSC:\> gsvw* | sortstatus

Здесь используется gsv, который является псевдонимом для get-service. Это даёт преимущество того, что -include switch (переключатель охвата) включается на позиции первого параметра, используя вид, который является псевдонимом для командлета sort-object (сортировать объект). -property switch (Переключатель свойств) находится в позиции первого параметра. Теперь предположим, что нужно остановить сервис World Wide Web Publishing (веб-публикаций). Без PowerShell можно нажать правой клавишей мыши на службу W3SVC для получения контекстного меню, а затем выбрать пункт Stop (останов). С использованием Windows PowerShell можно запустить следующую команду:


PS C:\> stop-service -servicename w3svc

или в сокращённом виде:


PSC:\> spsvw3svc

Другой общей задачей является изучение процессов, запущенных на компьютере. На данный момент можно сделать прогноз, как это сделать с помощью Windows PowerShell – последовательным и логичным командлетом Windows PowerShell с присвоением имени схемы, позволяющей легко распознать команду без проблем:


PSC:\> get-process

Предположим, требуется просмотреть запущенные процессы, отсортированных по количеству манипуляторов, принадлежащих каждому процессу:


PS C:\> get-process | sort-object -propertyhandles

Можно легко получить данную информацию, используя графический интерфейс Windows Task Manager (диспетчера задач). Однако рассмотрим, что эти три команды Windows PowerShell выполняют:


PS C:\> $p = get-process
PS C:\> $result = $p | measure-object -property handles -sum -average -max
PS C:\> $result | out-file '.\ProcessHandleStats.txt'

Первая команда, $p = get-process, выбирает всю информацию о процессах, запущенных на главном компьютере, и сохраняет её в переменной $p.

Вторая команда, $result = $p | measure-object -property handles -sum –max, передаёт захваченную информацию процесса в командлет measure-object (измерить объект), который вычисляет сумму, среднее и максимальное значение для всех используемых манипуляторов запущенных процессов, и сохраняет эту информацию в переменной $result. При просмотре переменной $result на этот момент можно увидеть следующее:

Count   (Счёт): 54
Average   (Среднее значение): 273.148148148148
Sum       (Сумма): 14750
Maximum (Максимум): 1625
Minimum (Минимум):
Property(Свойство):Handles(Манипуляторы)

Обратите внимание, что в данном примере имеется в общей сложности 54 запущенных процессов, и общее количество 14750 используемых манипуляторов, то есть в среднем около 237 манипуляторов на процесс. Наибольшее количество манипуляторов было использовано процессом с 1625 манипуляторами.

Третья командная строка, $results | out-file '.\ProcessHandleStats.txt', сохраняет результаты в текстовый файл. Опытные пользователи Windows PowerShell , скорее всего, объединят три вышеописанных команды в одну, в следующем виде:


PS C:\> gps | measure-object handles -sum -average -max |
        out-file'.\ProcessHandleStats.txt'

Одной из характерных черт архитектуры Windows PowerShell является то, что данная оболочка является легко расширяемой на всех уровнях, как пользователями, так и сторонними компаниями. Возможность наращивания Windows PowerShell является отдельной темой самой по себе, поэтому здесь приведён только один пример.

В конце этой статьи будут даны ссылки на вебкаст, где Джефри Сновер и Билл Стейплс демонстрируют замечательные командлеты Windows PowerShell вывода визуализации, разработанные сторонней компанией. Этот командлет называется out-gauge (измерить шкалу). Обратите внимание на семантическое сходство с внутренним командлетом out-file (вывести файл). Вместо отправки вывода данных в файл, что выполняет out-file, командлет out-gauge отправляет данные в визуально богатый набор элементов управления. Например, одна из команд, продемонстрированная на вебкасте, имеет вид:


PS C:\> get-process |
        measure-object handles -sum |
        out-gauge -value sum -refresh 0:0:1 -float -type

Эта команда вызывает floating-on-the-screen (плавание на экране), измеритель в цифровом виде, который отображает общее число используемых манипуляторов в режиме реального времени и обновляет дисплей каждую секунду. Всё это свидетельствует о том, что широкий спектр полезных инструментов Windows PowerShell будет доступен в ближайшее время.

Далее, посмотрим на пример размещения веб-сайта IIS 7.0 с помощью Windows PowerShell. Так как в предыдущих версиях IIS хранение конфигурации в метабазе, копирование веб-сайта с одного компьютера на другой не представлялось возможным. IIS 7.0 делает развёртывание веб-сайта простым решением копирования файлов. Рассмотрим этот скрипт Windows PowerShell:


# file: Deploy-Application.ps1

$sourceMachine = "DemoServer1"
$farmList = get-content '.\RestOfFarm.txt'
$filesToCopy = get-content '.\AppManifest.txt'

foreach ($targetMachine in $farmList)
{
   foreach ($file in$filesToCopy)
   {
      $sourcePath = "\\" + (join-path $sourceMachine $file)
      $destPath   = "\\" + (join-path $targetMachine $file)
      write-host -for yellow "$targetMachine : Copying files from
        $sourcePath"

      copy-item $sourcePath $destPath
        -recurse -force
   }
}

 

Этот скрипт довольно сложный, но поучительный. При сохранении в виде файла Deploy-Application.ps1, а затем выполненный из командной строки Windows PowerShell, представлен в следующем виде:


PSC:\> .\Deploy-Application.ps1

Конечным результатом является копирование всех файлов, перечисленных в файле AppManifest.txt, расположенном на компьютере DemoServer1, на все компьютеры, перечисленные в файле RestOfFarm.txt. Одной из особенностей Windows PowerShell является то, что хорошо написанные скрипты просты для понимания, по отношению к таким альтернативам, как VBScript или Perl. Этот скрипт использует командлет get-content (получить контент) для прочтения имён компьютеров из файла RestOfFarm.txt и имён файлов из файла AppManifest.txt.

Каждый цикл может быть новым для вас. Внешний цикл повторяется посредством каждого имени компьютера, сохранённого в переменной $farmList, сохраняя каждое имя в свою очередь в переменной $targetMachine. Внутренний цикл аналогичен и сохраняет каждый файл в свою очередь в $file. Командлет join-path (присоединить путь) используется для объединения строк для выработки полного исходного и конечного пути.

Наконец, командлет copy-item (копировать пункт) выполняет действия по копированию, где переключатель-recurse копирует все подкаталоги и, а переключатель -force приводит в действие перезапись существующих файлов. Обратите внимание, что этот скрипт содержит всю информацию об источнике и целевом положении, закодированном на жёстком диске.  Windows PowerShellобладает отличной возможностью передачи параметров, поэтому данный скрипт примера можно параметризировать для доступа к информации из командной строки. Однако эта тема выходит за рамки данной статьи.

Windows PowerShell совместно с IIS 7.0

До сих пор, эта статья представляла примеры Windows PowerShell , которые применялись к любому компьютеру сервера. А сейчас мы рассмотрим некоторые командлеты Windows PowerShell, являющиеся специфическими для IIS 7.0.

IIS 7.0 добавляет мощные возможности для помещения в кэш-память динамически созданного контента. IIS в течение длительного времени имеет возможность для кэша статических страниц. При получении сервера новых запросов от клиентов о недавно запрашиваемом контенте происходит следующее: вместо того, чтобы получить этот контент из внешней памяти, его можно извлечь непосредственно из кэш-памяти и вернуть клиенту. В результате, значительное улучшение производительности. IIS 7.0 расширяет эту идею, позволяя кэшировать также динамически созданные страницы. Рассмотрим этот предварительный релиз IIS 7.0, командлета Windows PowerShell:


PS C:\> add-iiscaching
        -computer $computerlist
        -path Demo
        -location index.php
        -credential $cred
        -extension .php
        -kernelcachepolicy 0
        -itemlocation 0
        -policy 1
        -varybyquerystring "Qwd,Qif,Qiv,Qis"

Тема создания пользовательских командлетов выходит за рамки данной статьи, но этот пример предлагает идею разновидностей командлетов, которых можно создать и которые будут написаны сообществом IIS. Имя командлета add-iiscaching (добавить iis-кэширование). Как упоминалось ранее, Windows PowerShell имеет расширяемую архитектуру, которая позволяет группе разработчиков IIS 7.0 создавать пользовательские командлеты, работающие непосредственно с IIS. Конечным результатом этой команды является возможность динамичного кэширования запросов страниц с Qwd, Qif, Qiv, и Qis в строку запроса в отношении конкретного PHP - приложения на всех серверах IIS7.0, чьи имена хранятся в переменной $computerlist.

Несмотря на то, что главное должно быть ясно, - что в IIS 7.0 можно легко активировать мощное улучшение быстродействия, используя простую команду Windows PowerShell – в статье продолжается рассмотрение подробной информации о параметрах переключения в данном примере.

Первый действительный параметр, -computer $computerlist, определяет, какие компьютеры будут выполнять командлет add-iiscaching. Например, при наличии простого текстового файла с именем "MyServers.txt" с именами компьютеров, как:

demo1server
demo2server
demo3server
demo4server

затем команда


PS C:\> $computerlist = get-content '.\MyServers.txt'

считывает список серверов в переменной $computerlist.

Второй действительный параметр, -path Demo, указывает на корневой путь приложения, на который требуется включить кэширование. В этом примере, поскольку значение пути не имеет пробелов, можно опустить кавычки, хотя их можно использовать следующим образом: -path "Demo" (-путь "Демо").

Третий действительный параметр, -location index.php, указывает на целевое приложение. Четвёртый действительный параметр -credential $cred, содержит информацию об аутентификации в переменной $cred. Это необходимо, так как предстоит копирование файлов на удалённые компьютеры. Эта информация может быть введена с помощью собственного командлета get-credential, как:


PSC:\> $cred = get-credential

Эта команда запускает управление GUI, в котором пользователь может указать имя пользователя и пароль, а результаты будут сохранены в переменной $cred.

Пятый действительный параметр, -extension .php, определяет тип приложения для кэширования.

Шестой действительный параметр, -kernelcachepolicy 0, сообщает командлету add-iiscaching не кэшировать информацию ядра.

Седьмой действительный параметр, -itemlocation 0, определяет, где расположена кэш информация отклика. 0 означает хранение данных либо у клиента, либо на сервере.

Восьмой действительный параметр, -policy 1, означает продолжение кэширования, пока не будет изменений в основном элементе кэша (в отличие от кэширования для определённого интервала времени).

Последний действительный параметр, -varybyquerystring"Qwd,Qif,Qiv,Qis", сообщает IIS 7.0 , какой тип отклика для кэша – в этом случае, это ответы на запросы, которые содержат Qwd, Qif, Qiv, and Qis в строке запроса. (Речь идёт о конкретных частях имени – значении пар, используемых приложением PHP в данном примере.)

Заключение

В данной статье было дано краткое описание Windows PowerShell, являющейся новой оболочкой среды от Microsoft и скриптовым языком. Была рассмотрена типичная навигация по файлу Windows PowerShell и примеры манипуляции, а также сделано предположение о том, что Windows PowerShell достигнет успеха за пределами существующих сред оболочки.

Во втором разделе данной статьи было продемонстрировано использование Windows PowerShell в типичной среде, в которой запущен IIS 7.0. Примеры включали в себя изучение сервисов Windows и процессы на главном компьютере. Это также прибавило к списку преимуществ ещё несколько пунктов по использованию Windows PowerShell к управлению и взаимодействию с IIS 7.0.

Вот шесть комментариев к таким преимуществам от ранее установленной оболочки Windows PowerShell. Они также включают в себя преимущества испытанные командой IIS.

  1. Поскольку команды Windows PowerShell можно сохранить в виде скриптов, они могут быть сохранены и выполнены автоматически. Это преимущество справедливо к любому скрипту, однако Windows PowerShell значительно легче в использовании, чем другие существующие языки сценариев.
  2. Поскольку команды Windows PowerShell можно сохранить и использовать в качестве скриптов, ими создаётся самодокументируемая запись деятельности управления IIS 7.0. Как часть Вам приходилось вспоминать, каким образом был модифицирован ключ реестра с помощью графического интерфейса пользователя (GUI) regedit.exe?   
  3. По сравнению с использованием GUI, команды Windows PowerShell "remove the magic" ("удаляют магию") и позволяют увидеть то, что происходит. GUI-инструменты хорошо подходят для лёгкой управленческой деятельности. Однако, используя инструменты GUI, можно прийти к мысли подобно этой: Я не знаю точно, почему это работает, но когда я дважды нажимаю мышью на это, проблема обычно бывает решена".
  4. Поскольку много других продуктов сервера Microsoft будет основано на Windows PowerShell, каждый раз при использовании команд и скриптов этой оболочки в управлении IIS 7.0, косвенно будет пройдено обучение на других системах.
  5. Использование Windows PowerShell создаёт общий принцип управления и средств коммуникации: сообщество Windows PowerShell быстро растёт и гораздо легче понять документацию или записи блога, которые представлены в форме команд Windows PowerShell, чем осмыслить документацию, которая читается подобно этой инструкции: "Откройте ММС, затем нажмите здесь, потом нажмите там, после чего дважды нажмите в этом месте…".
  6. Поскольку Windows PowerShell является всеобъемлющей средой, можно выполнить большинство действий именно в этой оболочке. Нет необходимости постоянно переходить из программы GUI в оболочку cmd.exe, основанную на другой программе графического интерфейса. Это подобно тому, как при разработке программного обеспечения идёт развитие от использования отдельных компиляторов, компоновщиков, программ отладки и т.д., до применения интегрированной среды подобной Visual Studio.

Во втором разделе данной статьи был также рассмотрен пример скрипта Windows PowerShell, который демонстрирует возможность IIS7.0 по развёртыванию веб-серверов на нескольких компьютерах с помощью простой операции file-copy (копировать файл).

В третьем разделе данной статьи было указано, каким образом разработка Windows PowerShell позволяет сообществу IIS создавать и совместно использовать командлеты данной оболочки, которые работают непосредственно с родными функциональными возможностями IIS. В частности, были представлены командлеты add-iiscaching, pre-release, которые могут задействовать новые возможности IIS 7.0 для кэширования динамически созданных страниц.

Хотя в этой статье только поверхностно рассмотрено взаимодействие Windows PowerShell и IIS 7.0, это должно убедить вас, что одновременно с двумя программными обеспечениями гораздо легче, более эффективно и приятно осуществлять IT-управление.

Ресурсы Windows PowerShell и IIS 7.0

См. https://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx для документации и примеров работы с Windows PowerShell, а также загрузки этой оболочки.

Ссылка https://channel9.msdn.com/ на вебкаст, характеризующий Windows PowerShell, от архитектора Джеффри Сновера, и IIS 7.0 от менеджера группы продукта Билла Стейплеса, на основании чего была написана эта статья.

См. https://blogs.msdn.com/PowerShell/ для просмотра полезных примеров, созданных командой Windows PowerShell.

См. http://www.powergadgets.com для более полного изучения инструментов визуализации на основе Windows PowerShell.

См. https://www.iis.net для получения информации о новой 7-ой версии IIS от Microsoft.

Начало работы с оснасткой IIS 7.0 PowerShell

Введение

The IIS 7.0 PowerShell Provider представляет собой PowerShell Snap-In (оснастку PowerShell), которая позволяет управлять конфигурацией IIS7 и данными времени исполнения. Это даёт лёгкий доступ к веб-сайтам, пулам приложений, веб-приложениям, виртуальным каталогам, текущим запросам, Worker Processes (исполнителю процессов) и доменам сетевого приложения в рамках Worker Processes.

Следуйте следующим пошаговым инструкциям. Они охватывают всеобъемлющую функциональность IIS 7 PowerShell Provider с использованием общих сценариев. Рекомендуется начать с первого основного анализ программы для понимания работы IIS 7.0 PowerShell Provider.

Инсталляция IIS 7.0 PowerShell Snap-in

Введение

В следующем анализе программы рассмотрим вопрос инсталляции IIS 7.0 PowerShell Snap-in и запуска IIS PowerShell Management Console (консоли управления IIS PowerShell).

Предварительные условия

Для IIS 7.0 PowerShell Snap-in необходимо выполнение следующих системных  требований:

  • Windows Server 2008 или Windows Vista Service Pack 1
  • Microsoft PowerShell 1.0 или 2.0

Для инсталляции IIS 7.0 PowerShell Snap-in:

  1. IIS 7.0 PowerShell Snap-in доступна как в версии x86, так и в x64. Загрузите по ссылке 32-Bit version или 64-Bit version.
  2. Запустите файл MSI для инсталляции IIS 7.0 PowerShell Snap-in.

Для инсталляции IIS 7.0 PowerShell Snap-in

PowerShell snap-ins подобно IIS 7.0 PowerShell Snap-in должны быть зарегистрированы с PowerShell. Существует два способа выполнения этого действия:

Автоматическая регистрация с использованием IIS PowerShell Management Console (консоли управления IIS PowerShell).

Установка IIS 7.0 PowerShell Snap-in создаст новый ярлык меню программы. С запуском этого ярлыка регистрация IIS 7.0 PowerShell Snap-in произойдёт автоматически. Нажмите на Start Menu (пуск) – выберите "All Programs" ("Все программы") - "IIS 7.0 Extensions" ("Расширение IIS 7.0") - "IIS PowerShell Management Console" ("Консоль управления IIS PowerShell"). Строка окна новой команды PowerShell установлена в положение "IIS:\" – корневой каталог пространства имён IIS Snap-in.

Регистрация в ручном режиме

При желании использовать IIS 7.0 PowerShell Snap-in в существующем окне командной строки PowerShell  необходимо зарегистрировать IIS snap-in вручную. Это можно сделать с помощью выполнения файла IISConsole.PSC1, расположенного в каталоге "$ ENV: ProgramFiles \ IIS \ PowerShellProvider".

PS C:\> & "$env:programfiles\IIS\PowerShellSnapin\iisConsole.psc1"

Немного о безопасности

Управление доступом пользователя

Для управления конфигурацией IIS7 Вы должны обладать правами администратора. Это означает, что Вы должны запустить все работающие интерфейсы PowerShell. Убедитесь, что Вы всегда начинаете работать с PowerShell через пункт меню "Run as Administrator" ("Запуск от имени администратора").

Политика выполнения PowerShell

Можно увидеть следующее сообщение об ошибке в зависимости от права доступа на выполнение PowerShell.

Windows PowerShell
Copyright (C) 2006 Microsoft Corporation. All rights reserved (Все права защищены).


Вы хотите запустить программное обеспечение от этого ненадёжного издателя?
File C:\Program Files\IIS\PowerShellProvider\iisprovider.types.ps1xml is published by CN=Microsoft
Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US and is not trusted on your
system. Запускать скрипты только от надёжных издателей.
[V] Never run  (Никогда не запускать) [D] Do not run  (Не запускать) [R] Run once (Запустить один раз)  [A] Always run  (Всегда запускать) [?] Help(default is "D") (Помощь (по умолчанию "D")):

Несмотря на то, что все файлы IIS PowerShell Provider подписаны, PowerShell доверяет только сценариям, которые подписаны 'Trusted Publisher' ('Надёжный издатель') при политике выполнения, установленной на "Restricted" ("Для служебного пользования"). Существуют два способа решения этой проблемы:

Ослабление политики выполнения

Если Вы видите сообщение об ошибке вышеуказанной политики выполнения, вероятно, была  произведена установка на "Restricted". При доверии к другому коду можно установить политику выполнения на "RemoteSigned" ("Удалить подписанное"), которая позволяет локальным скриптам запускаться без запроса о цифровой подписи.  Выполните следующую команду в окне с повышенными правами доступа PowerShell:

PS C:\> Set-ExecutionPolicy RemoteSigned

Выполните следующую команду для получения дополнительной информации о политике подписания и выполнения.

help about_signing

Сертификаты подписи кода  Microsoft к списку надёжных издателей

При доверии к скриптам и исполняемым файлам IIS Provider можно нажать на "A" в приведённом выше диалоге и будет добавлен сертификат подписи кода, использованный IIS Snap-in к списку надёжных издателей. Получение списка "Надёжные издатели" можно осуществить с помощью следующей команды:

dir cert:\CurrentUser\TrustedPublisher | fl

Резюме

В этом анализе программы был рассмотрен вопрос инсталляции IIS 7.0 PowerShell Snap-in в автоматическом или ручном режиме.

PowerShell Snap-in: Навигация IIS Snap-in Namespace (пространства имён)

Все знают о том, как организована файловая система. Файловые системы представляют собой иерархические пространства имён, состоящие из каталогов, которые содержат файлы и другие каталоги. PowerShell Snap-in использует это знание файловой системы и позволяет другим хранилищам информации представляться в виде иерархического пространства имён. Подобно корневому каталогу накопителя файловой системы обычно имеет место следующая установка:"C:\" the root of the IIS configuration system is "IIS:\".

В подкорневом каталоге накопителя "IIS:\" можно найти "Sites" ("Сайты") и пулы приложений – сокращённо "AppPools".

Организация IIS Snap-in Namespace (пространства имён)

Здесь представлена структура пространства имён IIS 7.0 PowerShell Snap-in. Следующее содержимое нельзя удалять или перемещать.

  • IIS:\
    • Sites (Сайты)
      • Site Collection (Коллекция сайта)
        • Applications and Virtual Directories (Приложения и виртуальные каталоги)
    • AppPools (Пулы приложений)
      • WorkerProcesses
    • SslBindings

Примечание:  При запущенномWorker Processes можно найти объекты процесса PowerShell в Worker Process collection (коллекции Worker Process). Эта коллекция процесса расширяется по мере появления запросов и объектов AppDomain. Данный факт позволяет запрашивать IIS Worker Processes для текущих запросов на выполнение и запуск Application Domains (прикладных доменов).

Теперь давайте испытаем это.

Задача 1 – Знакомство с IIS Provider Namespace

1.1. Начало работы с консолью управления IIS PowerShell

Нажмите на Start Menu (Меню запуска) – выберите "All Programs" ("Все программы") -"IIS 7.0 Extensions" ("Расширения IIS 7.0") - "IIS PowerShell Management Console"(Консоль управления IIS PowerShell). Строка окна новой команды PowerShell установлена в положении "IIS:\" - the root of the IIS Provider namespace (корневой каталог пространства имён провайдера IIS).

 1.2. Навигация по пространству имён

Напечатайте "dir" ("каталог") и обратите внимание, что сайты и пулы приложений имеют только два подкорневых каталога.

PS IIS:\> dir

Name
----
Sites
AppPools 

В качестве следующего шага нужно внести изменения в каталог сайтов. Данное действие можно выполнить с помощью следующих команд:

PS IIS:\> cd Sites

PS IIS:\Sites> dir

Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:

Если поступить опрометчиво, то можно заметить, что введение cd Si<tab>  приведёт к командной строке завершения работы.

А сейчас попытайтесь выполнить следующее:

1.2  Более подробно о навигации

А сейчас попытайтесь выполнить следующее:

PS IIS:\Sites> Get-Item 'Default Web Site' | Select-Object *


PSPath                     : IIsProviderSnapIn\WebAdministration::\\THDLAP\Sites\Default Web Site
PSParentPath               : IIsProviderSnapIn\WebAdministration::\\THDLAP\Sites
PSChildName                : Default Web Site
PSDrive                    : IIS
PSProvider                 : IIsProviderSnapIn\WebAdministration
PSIsContainer              : True
State                      : Started
name                       : Default Web Site
id                         : 1
serverAutoStart            : True
bindings                   : {binding, binding}
limits                     : Microsoft.Web.Administration.ConfigurationElement
logFile                    : Microsoft.Web.Administration.ConfigurationElement
traceFailedRequestsLogging : Microsoft.Web.Administration.ConfigurationElement
applicationDefaults        : Microsoft.Web.Administration.ConfigurationElement
virtualDirectoryDefaults   : Microsoft.Web.Administration.ConfigurationElement
applicationPool            : DefaultAppPool
enabledProtocols           : http
userName                   :
password                   :
physicalPath               : f:\inetpub\wwwroot
Attributes                 : {name, id, serverAutoStart, state}
ChildElements              : {bindings, limits, logFile, traceFailedRequestsLogging...}
ElementTagName             : site
IsLocallyStored            : True
Methods                    : {Start, Stop}
RawAttributes              : {name, id, serverAutoStart, state}
Schema                     : Microsoft.Web.Administration.ConfigurationElementSchema

Сначала попытаемся использовать командлеты PowerShell взамен старых привычных команд DOS таких, как CD или DIR. Если есть стремление к эффективной работе с IIS 7.0 PowerShell Snap-in, это будет хорошим поводом для знакомства с этими командами. Рассмотрим, например, командлет Get-Item, который позволяет получить подробную информацию об объекте в указанном месте. В нашем случае мы получаем подробные сведения для 'Default Web Site' ('Веб-сайт по умолчанию'). При желании сохранить попытку печатания 'get-item D<tab>', а командная строка будет автоматически завершена PowerShell. Произведём вывод данных Get-Item к командлету Select-Object (Выбрать объект), при этом отобразятся все настройки конфигурации 'Default Web Site'.

Резюме

Этот анализ программы помог быстро ознакомиться с организацией пространства имён IIS Snap-in. Также была изучена основная команда для нахождения собственного пути вокруг пространства имён IIS.