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

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

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

В предыдущей статье я упомянул, что Microsoft расширила библиотеку командлетов PowerShell с 200 командлетов (в Windows Server 2008 и 2008 R2) примерно до 2300 командлетов в Windows Server 8. Простая логика подскажет вам, что такое обширное расширение библиотеки командлетов собирается усложнить сценарии PowerShell. Тем не менее, Microsoft предприняла некоторые шаги, чтобы сделать использование PowerShell намного проще, чем это было бы в противном случае. Одна из лучших вещей, которые они сделали, — это упрощение синтаксиса команд.

Одним из наиболее запутанных аспектов предыдущих версий PowerShell было использование фигурных скобок {} и использование переменной, обозначенной как $_. В PowerShell 3.0 синтаксис был упрощен, чтобы уменьшить или устранить необходимость в фигурных скобках и переменной со знаком доллара.

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

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

Get-процесс | Для каждого {$_.имя}

После того, как мы убедились, что процесс, используемый Блокнотом, называется Блокнотом, мы можем завершить процесс, введя эту команду:

Блокнот Get-Process | Для каждого {$_.kill()}

Как вы можете видеть на рисунке A, этот процесс работает, но он не совсем интуитивно понятен.

Изображение 18663
Рисунок A. Команды PowerShell иногда не интуитивно понятны.

Имея это в виду, давайте посмотрим, как эти команды изменились в Windows Server 8. Команды, которые я только что обсуждал, по-прежнему работают в Windows 8. Фактически, предыдущий снимок экрана был взят из бета-версии Windows Server 8. Однако благодаря упрощению синтаксиса PowerShell эти две команды теперь можно выразить следующим образом:

Get-процесс | Для каждого имени

Блокнот Get-Process | ForEach Kill

Вы можете увидеть эти команды в действии на рисунке B.

Изображение 18664
Рисунок B: Microsoft упростила синтаксис команд PowerShell в Windows Server 8.

Если вы хотите попробовать это самостоятельно, вам нужно будет сделать еще одну вещь. Текущая бета-версия Windows Server 8, похоже, не имеет значка или пункта меню для запуска Блокнота (хотя он может быть где-то спрятан). В таком случае, если вам нужно запустить «Блокнот», чтобы попробовать эту демонстрацию, то самый простой способ сделать это — просто ввести «Блокнот» в окне PowerShell.

Прежде чем двигаться дальше, я хочу быстро отметить, что Get-Process — не единственный упрощенный командлет PowerShell. Это просто командлет, который я решил использовать в демонстрационных целях. В Windows Server 8 ни один из командлетов PowerShell не требует использования фигурных скобок или $_. переменные выражения (если вам специально не нужно присваивать переменную).

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

Microsoft также внесла ряд изменений в интегрированную среду сценариев PowerShell (PowerShell ISE). Если вы не знакомы с PowerShell ISE, это не новость для Windows Server 8. Вы можете увидеть, как выглядела версия PowerShell ISE для Windows Server 2008 R2, на рисунке C.

Изображение 18665
Рисунок C. Это версия PowerShell ISE для Windows Server 2008 R2.

Вы можете увидеть версию PowerShell ISE для Windows Server 8 на рисунке D. На первый взгляд эти две версии очень похожи, но есть некоторые существенные различия.

Изображение 18666
Рисунок D. Это версия PowerShell ISE для Windows Server 8.

Одним из больших отличий является включение IntelliSense. IntelliSense предназначен для упрощения ввода команд PowerShell, выступая в качестве механизма автоматического завершения. IntelliSense задействуется, когда вы вводите определенные символы (тире, точку, двойное двоеточие, обратную косую черту или пробел после параметра).

Если вы посмотрите на рисунок E, то увидите, что я набрал Get-. Как только я набрал тире, IntelliSense включилась и начала предлагать варианты. Если я продолжу печатать, список будет сужен в зависимости от того, что я набрал.

Изображение 18667
Рисунок E. IntelliSense задействуется автоматически по мере ввода.

Еще одна новая функция заключается в том, что код сценария можно расширять и сворачивать. Если вы посмотрите на рисунок F, вы заметите, что код перескакивает со строки 2 на строку 91. Причина этого в том, что я свернул блок кода. Чтобы открыть этот блок кода, я бы просто щелкнул значок со знаком плюс после цифры 2. Сворачивание блоков кода может упростить работу с большими сценариями, поскольку вы можете выбирать для просмотра только те части кода, которые вам нужны в данный момент. данный момент.

Изображение 18668
Рисунок F: PowerShell ISE позволяет разворачивать и сворачивать блоки кода.

Возможно, вы заметили окно Commands, показанное на рис. D. Окно Commands предназначено для облегчения запуска определенного командлета PowerShell. Все, что вам нужно сделать, это найти командлет, который вы хотите использовать, заполнить любые параметры, а затем нажать кнопку «Выполнить». Командлет запускается на панели PowerShell в нижней части окна, как показано на рисунке G.

Изображение 18669
Рисунок G. Окно «Команды» упрощает запуск командлетов PowerShell.

Вы также могли заметить кнопку «Вставить», показанную на рисунке выше. Если вы нажмете кнопку «Вставить», командлет (и все указанные параметры) будет вставлен в панель PowerShell, но не будет выполнен. Таким образом, вы можете конвейеризировать командлет с другими командлетами, и ваша командная строка не будет выполняться, пока вы не нажмете Enter.

Также есть кнопка «Копировать». Кнопка «Копировать» копирует командлет (и все указанные параметры) в буфер обмена, чтобы его можно было вставить в сценарий PowerShell.

Вывод

На протяжении всей этой серии статей я пытался подчеркнуть идею о том, что управление сервером в Windows Server 8 кардинально изменилось. Если у вас есть опыт работы с Windows Server 2008 R2, вы, вероятно, сможете разобраться в операционной системе Windows Server 8. Тем не менее, нельзя отрицать, что к новому диспетчеру серверов и новой версии PowerShell нужно привыкнуть.