Новая философия управления сервером в Windows Server 8 (часть 3)

Опубликовано: 20 Марта, 2023

Введение

На протяжении всей этой серии статей я говорил о новом диспетчере серверов Windows 8 — по крайней мере, в том виде, в каком он существует в версии Developer Preview. Несмотря на то, что Диспетчер серверов был полностью переработан, это не единственная область, в которой Microsoft внесла серьезные изменения в способ управления серверами. Есть также некоторые примечательные изменения в Windows PowerShell.

Откровенно говоря, PowerShell было довольно сложно использовать в Windows Server 2008 и Windows Server 2008 R2. Эти операционные системы Windows включали всего около 200 командлетов PowerShell. Несмотря на то, что может показаться, что нужно запомнить множество команд (и это так), просто не хватило доступных команд для действительно комплексного управления сервером. PowerShell даже не обращалась ко многим основным службам операционной системы. Например, насколько мне известно, нет встроенных команд PowerShell для управления такими вещами, как DNS или DHCP.

Это не означает, что Microsoft полностью оставила администраторов в стороне. Часто администраторы могли выполнять задачи, переключаясь в устаревшее окно командной строки и используя собственные команды командной строки или такие утилиты, как NETSH. Тем не менее, нельзя отрицать, что постоянное переключение между PowerShell, графическим пользовательским интерфейсом и окном командной строки — не самый эффективный способ ведения дел.

Так что же изменилось в Windows Server 8? Ну, для начала, команд PowerShell гораздо больше, чем в предыдущих операционных системах Windows Server. 200 команд PowerShell, которые существовали в Windows Server 2000 8R 2, уступили место умопомрачительным 2300 командлетам.

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

Хотя возможность отключения от сеансов PowerShell и повторного подключения к ним — это хорошо, эта возможность — больше, чем просто удобная функция. Как я уверен, вы, вероятно, знаете, версия PowerShell, которая у нас есть сегодня, позволяет вам разрабатывать и выполнять сценарии PowerShell. Сценарии все еще существуют в PowerShell 3.0, но Microsoft подняла их на новый уровень, включив функцию рабочего процесса.

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

Я понимаю, что некоторым из вас, кто читает это, может быть интересно, дает ли возможность прерывания для перезапуска рабочего процесса какие-либо реальные преимущества. Однако рабочие процессы обеспечивают по крайней мере одно важное преимущество перед сценариями PowerShell, которые у нас есть сегодня. Поскольку рабочие процессы можно прерывать и возобновлять, можно создать рабочий процесс, который перезагружает сервер, а затем возобновляет выполнение инструкций после завершения перезагрузки.

Если вам интересно, администраторам не придется полностью заново изучать PowerShell для разработки рабочих процессов. Рабочие процессы могут быть написаны либо с помощью языка Windows PowerShell, либо с помощью XAML. Они выполняются новым компонентом Windows Server, который называется Windows Workflow Foundation. Хотя это выходит за рамки данной статьи, Microsoft даже планирует включить механизм, позволяющий планировать рабочий процесс. Это означает, что можно будет запускать задания в заданное время без вмешательства администратора.

Интегрированная среда сценариев

Поскольку PowerShell 3.0 уделяет такое большое внимание сценариям и рабочим процессам, Microsoft создала новую функцию под названием Integrated Scripting Environment. Интегрированная среда сценариев предназначена для упрощения использования PowerShell для начинающих, а также предоставляет расширенные возможности редактирования для тех администраторов, которым необходимо разрабатывать сценарии PowerShell.

Интегрированная среда сценариев не устанавливается на Windows Server по умолчанию. Вы можете установить его, открыв окно PowerShell и выполнив следующую команду:

Add-WindowsFeature PowerShell–ISE

Обнаружение команды

С 2300 командами PowerShell можно с уверенностью предположить, что большинству администраторов, вероятно, потребуется небольшая помощь, чтобы выяснить, какие команды использовать в различных ситуациях. Предыдущие версии PowerShell предоставляли справку по командам, но один аспект, который иногда вызывал разочарование, заключался в том, что командлеты PowerShell часто были заблокированы в модулях. Пока администратор не загрузил модуль, команды, связанные с модулем, были недействительны.

Модули по-прежнему существуют в Windows Server 8, но в большинстве случаев вам не придется беспокоиться об их явной загрузке. Чтобы показать вам, что я имею в виду, взгляните на рисунок A. На этом рисунке я использовал команду Get-Command *Disk* для вывода списка всех командлетов, содержащих слово Disk. Обратите внимание, что PowerShell перечисляет все командлеты, независимо от того, частью какого модуля они являются. Командлет Get-Disk, например, является частью модуля Storage.

Изображение 18752
Рисунок A: Командлеты перечислены независимо от модуля, в котором они находятся.

Теперь взгляните на рисунок B. Я смог использовать командлет Get-Disk без предварительного импорта модуля хранения. Когда я ввожу командлет Get-Module, вы можете видеть, что модуль Storage был импортирован автоматически, когда я запускал командлет Get-Disk.

Изображение 18753
Рисунок B: PowerShell 3.0 автоматически импортирует модули по мере необходимости.

Еще одна вещь, которую Microsoft сделала для упрощения использования PowerShell, — это предоставление нам командлета Show-Command. Ввод этого командлета предоставляет список всех доступных командлетов PowerShell. Как видно на рисунке C, вы можете выполнять поиск по части имени командлета и фильтровать результаты по модулю.

Изображение 18754
Рисунок C. Вы можете использовать командлет Show-Command, чтобы просмотреть список доступных командлетов.

Действительно интересная часть этого диалогового окна заключается в том, что оно может помочь вам с синтаксисом команд. Если вы посмотрите на рисунок D, то увидите, что я выбрал командлет Get-Disk. Окно «Команды» изменится, чтобы отобразить ряд вкладок, которые позволяют указать значения для любых параметров, которые вы хотите использовать. Когда вы закончите, вы можете нажать кнопку «Выполнить», чтобы выполнить командлет на месте. Другой вариант — нажать кнопку «Копировать». Затем вы можете вставить полную команду в окно PowerShell или в редактор сценариев.

Изображение 18755
Рисунок D: PowerShell помогает вам с синтаксисом команд.

Вывод

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

  • Новая философия управления сервером в Windows Server 8 (часть 4)