Windows PowerShell

Поделись знанием:
(перенаправлено с «PowerShell»)
Перейти к: навигация, поиск
Windows PowerShell

Сессия в Windows PowerShell.
Тип

Оболочка операционной системы

Разработчик

Microsoft

Операционная система

Windows XP
Windows Server 2003
Windows Vista
Windows Server 2008/2008 R2
Windows 7
Windows 8
Windows 8.1
Windows RT
Windows RT 8.1
Windows 10
Linux
macOS

Первый выпуск

14 ноября, 2006 года

Аппаратная платформа

x86, x86-64 и Itanium

Последняя версия

5.0 (сборка 10240) (29 июля 2015 года)

Лицензия

Лицензия MIT

Сайт

[www.microsoft.com/powershell rosoft.com/powershell]

Windows PowerShellWindows PowerShellК:Программное обеспечение, разработанное в 2006 году

Windows PowerShell — расширяемое средство автоматизации от Microsoft с открытым исходным кодом[1], состоящее из оболочки с интерфейсом командной строки и сопутствующего языка сценариев. Впервые публично язык был продемонстрирован на Профессиональной конференции разработчиков (англ. Professional Developers Conference, PDC) в сентябре 2003 года под кодовым названием Monad.

Windows PowerShell 2.0 был выпущен в составе Windows 7, Windows 8 и Windows Server 2008 R2, а также Windows Server 2012 R2, как неотъемлемый компонент системы. Кроме того, вторая версия доступна и для других систем, таких, как Windows XP SP3, Windows Server 2003 SP2, Windows Vista SP1, Windows Vista SP2, Windows Server 2008[2] и Windows Server 2012.

Windows PowerShell построен на базе Microsoft .NET Framework и интегрирован с ним. Дополнительно PowerShell предоставляет удобный доступ к COM, WMI и ADSI, равно как и позволяет выполнять обычные команды командной строки, чтобы создать единое окружение, в котором администраторы смогли бы выполнять различные задачи на локальных и удалённых системах.

Эти административные задачи обычно выполняются с помощью командлетов[⇨] (в оригинале cmdlets), которые являются специализированными классами .NET. Пользователь может комбинировать их в скриптах (сценариях), используя различные конструкции, утилиты командной строки и обращения к обычным классам .NET, объектам WMI или COM. Кроме того, можно использовать различные хранилища данных, такие, как файловая система или реестр Windows, которые предоставляются PowerShell посредством поставщиков (англ. providers).

Windows PowerShell также предоставляет механизм встраивания, благодаря которому исполняемые компоненты PowerShell могут быть встроены в другие приложения. Эти приложения затем могут использовать функциональность PowerShell для реализации различных операций, включая предоставляемые через графический интерфейс. Этот подход применён в Microsoft Exchange Server 2007 для реализации управляющей функциональности в виде командлетов PowerShell и графических утилит управления в виде оболочек PowerShell, которые вызывают необходимые командлеты. Таким образом, графический интерфейс управления находится поверх промежуточного слоя — PowerShell. Другие приложения Microsoft, включая Microsoft SQL Server 2008, System Center Operations Manager и System Center Data Protection Manager также предоставляют доступ к своим интерфейсам управления через командлеты PowerShell.

Windows PowerShell включает свою собственную расширяемую справку, доступную (в том числе из командной строки) через командлет Get-Help.





Предыстория

Каждая выпущенная версия MS-DOS и Microsoft Windows для персональных компьютеров содержала утилиту, предоставляющую интерфейс командной строки. Это были COMMAND.COM (в системах, основанных на MS-DOS, включая Windows 9x) и cmd.exe (в системах семейства Windows NT). Это были обычные интерпретаторы командной строки, имевшие лишь несколько базовых команд. Для других задач требовались отдельные консольные приложения, которые вызывались из этих оболочек. Они также имели язык сценариев (пакетные файлы), при помощи которого можно было автоматизировать различные задачи. Однако эти интерпретаторы не годились для полноценной автоматизации — частично потому, что в них отсутствовали эквиваленты многих операций графического интерфейса, а также из-за слабой функциональности языка сценариев, не позволявшего описывать достаточно сложные алгоритмы. В Windows Server 2003 ситуация была улучшена, однако поддержка сценариев всё ещё считалась недостаточной.

Microsoft пыталась решить некоторые из этих недостатков с помощью Windows Script Host, вышедшего в 1998 году в составе Windows 98, и утилиты для работы с ним из командной строки cscript.exe. Он интегрируется с Active Script и позволяет писать сценарии на совместимых языках, таких, как JScript и VBScript, используя API, предоставляемое приложениями через Component Object Model (COM). Однако у этого решения свои недочёты. Windows Script Host не интегрирован с оболочкой, отсутствует встроенная документация. Различные версии Windows также предоставляют командные интерпретаторы специального назначения (такие, как netsh.exe и WMIC) со своими собственными наборами команд. Они не интегрированы с командной оболочкой и не дают возможностей для взаимодействия.

В 2003 Microsoft начала разработку новой оболочки, называемой Monad (также известной как Microsoft Shell или MSH). Monad должен был стать новой расширяемой оболочкой командой строки, со свежим дизайном, который позволял бы автоматизировать весь спектр административных задач. Microsoft опубликовала первую публичную бета-версию Monad 17 июня 2005 года. Вторая и третья бета-версии были выпущены 11 сентября 2005 и 10 января 2006 соответственно. 25 апреля 2006 года было объявлено, что Monad переименован в Windows PowerShell для позиционирования его в качестве значительной части их технологий управления. В это же время была выпущена версия Release Candidate 1 («кандидат на выпуск»). Release Candidate 2 последовал 26 сентября 2006 года. Финальная версия (Release to Web, RTW) была выпущена 14 ноября 2006 года для Windows XP SP2 и Windows 2003. Финальная версия для Windows Vista стала доступна только 30 января 2007 года.

Последний CTP выпуск Windows PowerShell версии 2.0 был выпущен в декабре 2008 года. Финальная версия второй версии PowerShell была выпущена в составе систем Windows 7 и Windows Server 2008 R2 одновременно с их выпуском. Для остальных систем (Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008), вторая версия PowerShell стала доступна в составе комплекта Windows Management Framework 27 октября 2009 года. Кроме Windows PowerShell второй версии, в этот комплект также входят WinRM версии 2.0 и BITS 4.0 (последний доступен только для Windows Vista и Windows 2008; в Windows 7 и Windows Server 2008 R2 он встроен).

Обзор

Команды, исполняемые в Windows PowerShell, могут быть в форме командлетов, которые являются специализированными классами .NET, созданными с целью предоставления функциональности в PowerShell в виде сценариев PowerShell (.PS1) или являются обычными исполняемыми файлами. Если команда является исполняемым файлом, то PowerShell запускает её в отдельном процессе; если это командлет, то он исполняется внутри процесса PowerShell. PowerShell предоставляет интерфейс командной строки, в котором можно вводить команды и отображать выводимые ими данные в текстовом виде. Этот пользовательский интерфейс, базирующийся на стандартном механизме консоли Windows, предоставляет настраиваемый механизм автозавершения команд, но не обладает возможностью подсветки синтаксиса, хотя при желании её можно обеспечить[3]. В PowerShell также можно создавать псевдонимы (англ. alias) для командлетов, которые при вызове преобразуются в оригинальные команды. Кроме того, поддерживаются позиционные и именованные параметры для командлетов. При выполнении командлета работа по привязке значений аргументов к параметрам выполняется самим PowerShell, но при вызове внешних исполняемых файлов аргументы передаются им для самостоятельного разбора.

Другое понятие, используемое в PowerShell, — это конвейер (англ. pipeline). Подобно конвейерам в UNIX, они предназначены для объединения нескольких команд путём передачи выходных данных одной команды во входные данные второй команды, используя оператор |. Но, в отличие от аналога в UNIX, конвейер PowerShell является полностью объектным, то есть данные между командлетами передаются в виде полноценных объектов соответствующих типов, а не как поток байтов. Когда данные передаются как объекты, содержащиеся в них элементы сохраняют свою структуру и типы между командлетами, без необходимости использования какой-либо сериализации или посимвольного разбора данных. Объект также может содержать некоторые функции, предназначенные для работы с данными. Они также становятся доступными для получающего их командлета. Вывод последнего командлета в конвейере PowerShell автоматически передаёт на командлет Write-Host, который создаёт текстовое представление объектов и содержащихся в них данных и выводит его на экран.

Так как все объекты PowerShell являются объектами .NET, они содержат метод .ToString(), возвращающий текстовое представление данных объекта. PowerShell использует этот метод для преобразования объекта в текст. Кроме того, он позволяет указать правила форматирования, так что текстовое представление объектов может быть настроено. Однако с целью поддержания совместимости, если в конвейере используется внешний исполняемый файл, то он получает текстовый поток, представляющий объект, и не интегрируется с системой типов PowerShell.

Расширенная система типов (англ. Extended Type System, ETS) PowerShell базируется на системе типов .NET, но реализует некоторые дополнения. Например, она позволяет создавать различные представления объектов, отображая лишь некоторые из их свойств и методов, а также применять специальное форматирование и механизмы сортировки. Эти представления привязываются к оригинальным объектам с помощью конфигурационных файлов в формате XML.

Командлеты

Командлеты (англ. cmdlets) — это специализированные команды PowerShell, которые реализуют различную функциональность. Это встроенные в PowerShell команды. Командлеты именуются по правилу Глагол-Существительное, например, Get-ChildItem, благодаря чему их предназначение понятно из названия. Командлеты выводят результаты в виде объектов или их коллекций. Дополнительно командлеты могут получать входные данные в такой же форме и, соответственно, использоваться как получатели в конвейере. Хотя PowerShell позволяет передавать по конвейеру массивы и другие коллекции, командлеты всегда обрабатывают объекты поочередно. Для коллекции объектов обработчик командлета вызывается для каждого объекта в коллекции по очереди.

Экземпляры объектов создаются в PowerShell и запускаются им при вызове. Командлеты наследуются от Cmdlet или от PSCmdlet, причём последний используется тогда, когда командлету необходимо взаимодействовать с исполняемой частью PowerShell (англ. PowerShell runtime). В этих базовых классах оговорены некоторые методы — BeginProcessing(), ProcessRecord() и EndProcessing(), как минимум один из которых реализация командлета должна перезаписать для предоставления своей функциональности. Каждый раз при запуске командлета эти методы вызываются PowerShell по очереди. Сначала вызывается BeginProcessing(), затем, если командлету передаются данные по конвейеру, ProcessRecord() для каждого элемента, и в самом конце — EndProcessing(). Класс, реализующий Cmdlet, должен иметь один атрибут .NET — CmdletAttribute, в котором указываются глагол и существительное, составляющие имя командлета. Популярные глаголы представлены в виде перечисления (англ. enum).

Реализации командлетов могут вызывать любые доступные .NET API и могут быть написаны на любом языке .NET. PowerShell также предоставляет некоторые дополнительные API, такие, как WriteObject(), которые необходимы для доступа к специфичной для PowerShell функциональности, например, для вывода результирующих объектов в конвейер. Командлеты могут использовать API для доступа к данным напрямую или воспользоваться инфраструктурой поставщиков (англ. provider) PowerShell, которые позволяют обращаться к хранилищам данных через уникальные пути. Хранилища данных представляются через буквы дисков и иерархическую структуру внутри них (директории). Windows PowerShell поставляется с поставщиками для файловой системы, реестра Windows, хранилища сертификатов, а также для псевдонимов команд, переменных и функций. Другие приложения могут добавлять свои командлеты и поставщики для доступа к своим хранилищам данных.

В PowerShell 2.0 была добавлена возможность создания командлетов на самом PowerShell, без использования .NET-языков.

Конвейер

В PowerShell, как и в оболочках UNIX/Linux, присутствует конвейер. Этот конвейер служит для передачи выходных данных одного командлета во входные данные другого командлета. В частности, пользователь может вывести результаты командлета Get-Process в командлет Sort-Object (например, для сортировки процессов по дескрипторам), затем в Where-Object, чтобы отфильтровать процессы, которые, например, занимают меньше 1 МБ страничной памяти, и, в конце концов, передать результаты в командлет Select-Object, чтобы выбрать только первые 10 процессов (по количеству дескрипторов). Концепция конвейера изначально используется в UNIX-подобных системах (см. Конвейер (UNIX)), концепция PowerShell отличается от данного. В UNIX-подобных системах вывод одной команды передаётся на следующий этап конвейера в бинарной форме, то есть являет собой фактически поток данных. Пример: dd if=/dev/zero bs=1M count=1M | bzip2 -z9 -c > ex.bz2, где поток «нулей» блоками по 1 МБ в количестве 1 миллиона раз (из устройства /dev/zero) командой dd (копирования специальных файлов) передаётся на ввод команды Bzip2, которая их сжимает максимально возможно (с точки зрения алгоритма сжатия bzip2, опция -z9) и результирующий поток передаёт на stdout (опция ), который, в свою очередь, перенаправляется в файл ex.bz2. Результатом выполнения такой относительно короткой команды станет создание архива, внутри которого будет поток нулевых байтов размером 1 терабайт. Сам процесс создания такого архива применяет в данном случае 2 последовательных конвейера.

Сценарии

PowerShell включает язык сценариев с динамическими типами, на котором можно реализовывать сложные операции с использованием командлетов. Язык сценариев поддерживает переменные, функции, конструкции ветвления (if-then-else) циклы (while, do, for и foreach), структурированную обработку ошибок и множество других возможностей, включая интеграцию с .NET. Переменные в PowerShell обозначаются префиксом $ перед именем; им может быть присвоено любое значение, включая вывод командлетов. Хотя сам язык не строго типизирован, внутри переменные сохраняются с их типами, которые могут быть базовыми типами (англ. primitive types) или объектами. Строки могут быть заключены в одиночные кавычки или в двойные кавычки: при использовании двойных кавычек переменные, содержащиеся в строке, будут заменены их значениями. В соответствии с синтаксисом переменных, если путь к файлу помещен в фигурные скобки с предшествующим знаком доллара (то есть ${C:\foo.txt}), то это будет ссылкой на содержимое файла. Всё, что будет назначено такой переменной, будет записано в файл, и наоборот — при обращении к её содержимому будет выдано содержимое файла.

К свойствам и методам объекта можно обращаться, используя точку (.), как в синтаксисе C#. PowerShell предоставляет специальные переменные, такие, как $args, содержащую массив всех неименованных аргументов командной строки, переданных функции, или $_, ссылающуюся на текущий объект в конвейере и других конструкциях. В PowerShell также присутствуют массивы и ассоциативные массивы. Кроме того, PowerShell автоматически вычисляет арифметические выражения, введённые в командной строке, и понимает популярные аббревиатуры, такие, как GB (ГБ), MB (МБ) и KB (КБ).

В PowerShell можно создавать собственные функции, принимающие параметры, с помощью ключевого слова function. Проблема для многих начинающих — то, что функции принимают аргументы, разделённые не запятыми, а пробелами (как утилиты командной строки или командлеты):

  1. <function> <param1> <param2>: Вызывает функцию с двумя аргументами.

Эти аргументы могут быть привязаны к параметрам, указанным в объявлении функции. Также к ним можно обратиться через массив $args.

  1. <function>(<param1>, <param2>): Вызывает функцию с одним аргументом, который является массивом из двух элементов.

PowerShell позволяет вызывать любые методы .NET, заключив их пространство имён в квадратные скобки ([]), и затем используя пару двоеточий (::) для указания статического метода. Например, [System.Console]::WriteLine("PowerShell"). Объекты создаются с помощью командлета New-Object, добавлять к ним новые свойства можно, используя командлет Add-Member.

Для обработки ошибок PowerShell предоставляет механизм, основанный на .NET. В случае ошибки выдаются объекты, содержащие информацию об ошибке (объект Exception), которые перехватываются ключевым словом trap. Однако поведение при возникновении ошибок настраивается. Так, можно настроить PowerShell, чтобы в случае ошибки он молча продолжал выполнение без перехвата ошибки. Во второй версии PowerShell также была добавлена конструкция Try Catch Finally.

Сценарии, написанные в PowerShell, можно сохранять между сессиями в файлах .PS1. Затем можно использовать весь сценарий или индивидуальные функции из него. Сценарии и функции используются подобно командлетам, то есть они могут быть командами в конвейере, им можно передавать параметры. Объекты могут прозрачно передаваться между сценариями, функциями и командлетами в конвейере. Однако выполнение сценариев PowerShell по умолчанию запрещено, и его надо включить с помощью командлета Set-ExecutionPolicy. Сценарии PowerShell могут быть подписаны цифровой подписью для проверки их целостности.

PowerShell 2.0

Microsoft выпустила PowerShell 2.0 в составе Windows 7 и Windows Server 2008 R2. Windows PowerShell 2.0 предустановлен в этих системах. Исключением является режим установки Windows Server 2008 R2 в режиме Core, где PowerShell 2.0 можно доустановить вручную. Для более старых платформ он доступен в составе Windows Management Framework. PowerShell 2.0 вносит некоторые изменения в язык сценариев и API для встраивания, в дополнение к новым 240 командлетам.

Неполный список новых возможностей, включённых в PowerShell 2.0:

  • PowerShell Remoting. Используя WS-Management, PowerShell 2.0 позволяет вызывать сценарии и командлеты на удалённых машинах (в том числе и на нескольких одновременно), отслеживать состояние их выполнения и получать результаты в виде объектов (через сериализацию-десериализацию). Также возможно устанавливать интерактивные сессии и сессии с ограниченной функциональностью.
  • Фоновые работы. Возможность вызывать последовательности команд асинхронно. Работы можно запускать на локальной машине или на нескольких удалённых машинах. Работы не могут использовать интерактивные командлеты.
  • Транзакции. Позволяют разработчикам командлетов и поставщиков реализовывать транзакционные операции. PowerShell 2.0 включает командлеты для инициализации, подтверждения и отката транзакций и возможности для управления транзакциями и использования их в командлетах и поставщиках.
  • Advanced Functions. Возможность разрабатывать полноценные командлеты, используя только сам PowerShell.
  • SteppablePipelines. Позволяет пользователю контролировать вызов функций BeginProcessing(), ProcessRecord() и EndProcessing() при вызове командлета.
  • Модули. Позволяют авторам сценариев и администраторам организовывать сценарии PowerShell и помещать их в самодостаточные модули. Код из модуля выполняется в своем собственном, независимом контексте и не влияет на окружение вне модуля. Используя сценарий, модули могут объявлять ограниченное окружение. Модули могут содержать публичные и приватные функции и переменные.
  • Язык данных. Подмножество языка PowerShell, которое позволяет отделять определения данных от исполняемого кода сценариев и даёт возможность импортировать в сценарий локализованные строки в процессе выполнения.
  • Отладка сценариев. Возможность устанавливать точки прерывания (англ. breakpoints) в сценариях или функциях PowerShell. Точки прерывания могут быть установлены на строки, столбцы, команды или операции чтения и/или записи переменных. Присутствуют командлеты для установки и контроля точек прерывания в сценариях.
  • Eventing (событирование). Эта возможность позволяет слушать, перенаправлять, и выполнять действия при возникновении событий управления или системы. Благодаря событированию хосты PowerShell могут быть оповещены о изменениях состояния в управляемых объектах. Также позволяет сценариям подписываться на ObjectEvents, PSEvents и WmiEvents и обрабатывать их синхронно и асинхронно.
  • Windows PowerShell Integrated Scripting Environment (ISE). PowerShell 2.0 включает графическую оболочку для языка, в которую входят встроенный отладчик, подсветка синтаксиса, автозавершение команд. Оболочка позволяет запускать несколько независимых консолей PowerShell с полной поддержкой Юникода в интерфейсе с закладками. Благодаря поддержке удалённого выполнения некоторые консоли могут выполняться и на других компьютерах. Кроме того, ISE позволяет выполнять только выделенные части сценариев, содержит встроенный редактор и позволяет расширять и дополнять свой интерфейс с помощью PowerShell.
  • BITS Transfer — встроенная поддержка передачи файлов по сети с приоритизацией, многопоточностью, возобновлением и асинхронной работой на основе технологии Background Intelligent Transfer Service.
  • Множество новых командлетов, включая, например, Out-GridView, позволяющий вывести результаты конвейера в графическую таблицу (на основе WPF), с возможностями сортировки и мгновенного поиска.
  • Новые операторы -Split, -Join и оператор подстановки (@).
  • Обработка ошибок с Try-Catch-Finally. В отличие от других .NET языков, в PowerShell можно указывать несколько типов исключений для одного блока catch.
  • Блочные комментарии. PowerShell 2.0 поддерживает блочные комментарии (плюс к уже имеющимся построчным #) с использованием <# и #> в качестве ограничителей.
  • Новые API добавили разные возможности, от большего контроля над парсером PowerShell до способности создавать ограниченные сессии (англ. restricted runspace), в которых можно выполнять лишь ограниченный набор инструкций и команд PowerShell.

Сравнение командлетов с аналогичными командами

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

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

Windows PowerShell
(Cmdlet)
Windows PowerShell
(Alias)
cmd.exe / COMMAND.COM
(MS-DOS, Windows, OS/2, etc.)
Bash
(Unix, BSD, Linux, Mac OS X и т. п.)
Описание
Get-Location gl, pwd cd[4] pwd Отображает текущий рабочий каталог
Set-Location sl, cd, chdir cd, chdir cd Меняет текущий каталог
Clear-Host cls, clear cls clear Очищает экран[5]
Copy-Item cpi, copy, cp copy cp Копирует один или несколько файлов или дерево директорий (в PowerShell также можно копировать объекты других поставщиков данных)
Get-Help help, man help man Справка по командам
Remove-Item ri, del, erase, rmdir, rd, rm del, erase, rmdir, rd rm, rmdir Удаляет файл/каталог (или другой элемент в поставщиках данных PowerShell).
Rename-Item rni, ren ren, rename mv Переименовывает файл/каталог
Move-Item mi, move, mv move mv Перемещает файл/каталог в новое местоположение
Get-ChildItem gci, dir, ls dir ls Выводит все файлы/каталоги в текущем каталоге
Write-Output echo, write echo echo Выводит строки, переменные на стандартный вывод
Pop-Location popd popd popd Изменяет текущий каталог на тот, который был последним помещён в стек
Push-Location pushd pushd pushd Помещает текущий каталог в стек
Set-Variable sv, set set set Установка значения переменной/создание переменной
Get-Content gc, type, cat type cat Получает содержимое файла
Select-String sls find, findstr grep Выводит строки, подходящие под условие
Get-Process gps, ps tlist,[6] tasklist[7] ps Выводит все запущенные процессы
Stop-Process spps, kill kill,[6] taskkill[7] kill Останавливает запущенный процесс
Tee-Object tee n/a tee Передаёт входные данные в файл или переменную, затем передаёт их дальше по конвейеру

См. также

Напишите отзыв о статье "Windows PowerShell"

Примечания

  1. [github.com/PowerShell/PowerShell PowerShell/PowerShell]. GitHub. Проверено 20 августа 2016.
  2. [support.microsoft.com/kb/968929/ru Описание Windows Management Framework]
  3. [xaegr.wordpress.com/2008/02/13/realtime-syntax-highlighting-in-powershell-console/ Realtime Syntax Highlighting in PowerShell Console " PowerShell и другие скрипты]
  4. cd без параметров выводит текущий каталог.
  5. Clear-Host реализован как предопределённая функция PowerShell.
  6. 1 2 Available in Windows NT4, Windows 98 Resource Kit, Windows 2000 Support Tools
  7. 1 2 Available in Windows XP Professional Edition and later

Литература

Ссылки

  • [msdn.microsoft.com/ru-ru/library/cc281945.aspx Обучающие ресурсы по Windows PowerShell]
  • [support.microsoft.com/kb/928439/ru Центр загрузки установочного пакета Windows PowerShell 1.0 для системы Windows Vista]
  • [www.techdays.ru/videos/1033.html Доклад о нововведениях в PowerShell 2.0]
  • [www.techdays.ru/videos/2776.html Доклад о регулярных выражениях в Windows PowerShell]
  • [www.techdays.ru/videos/1187.html Доклад о возможностях PowerShell и основах написания сценариев]
  • [support.microsoft.com/kb/968929 Windows Management Framework (включающий PowerShell 2.0, WinRM 2.0 и BITS 4.0) для Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008]
  • [xaegr.wordpress.com Блог «PowerShell и другие скрипты»] (рус.)
  • [blogs.technet.com/abeshkov/archive/tags/Powershell/default.aspx «Блог Бешкова Андрея из Microsoft, о Powershell»] (рус.)
  • [blogs.technet.com/abeshkov/archive/2008/12/24/3172943.aspx Бесплатная русская книга о PowerShell] (рус.)
  • [blogs.technet.com/abeshkov/archive/2008/02/29/2943123.aspx Вторая бесплатная английская книга о PowerShell] (англ.)
  • [www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx Веб-узел Windows PowerShell] (англ.)
  • [www.xakep.ru/post/50777/ Капитан PowerShell и администрирование будущего]  (рус.)
  • [www.xakep.ru/magazine/xa/091/040/1.asp Могучий шелл]
  • [blogs.technet.com/abeshkov/archive/2008/02/29/2943734.aspx Виртуальная лаборатория «Creating Windows PowerShell Script Cmdlets»]
  • [habrahabr.ru/post/73809/ PowerShell 2.0 RTM доступен для всех версий Windows]


Отрывок, характеризующий Windows PowerShell



Во второй раз, уже в конце Бородинского сражения, сбежав с батареи Раевского, Пьер с толпами солдат направился по оврагу к Князькову, дошел до перевязочного пункта и, увидав кровь и услыхав крики и стоны, поспешно пошел дальше, замешавшись в толпы солдат.
Одно, чего желал теперь Пьер всеми силами своей души, было то, чтобы выйти поскорее из тех страшных впечатлений, в которых он жил этот день, вернуться к обычным условиям жизни и заснуть спокойно в комнате на своей постели. Только в обычных условиях жизни он чувствовал, что будет в состоянии понять самого себя и все то, что он видел и испытал. Но этих обычных условий жизни нигде не было.
Хотя ядра и пули не свистали здесь по дороге, по которой он шел, но со всех сторон было то же, что было там, на поле сражения. Те же были страдающие, измученные и иногда странно равнодушные лица, та же кровь, те же солдатские шинели, те же звуки стрельбы, хотя и отдаленной, но все еще наводящей ужас; кроме того, была духота и пыль.
Пройдя версты три по большой Можайской дороге, Пьер сел на краю ее.
Сумерки спустились на землю, и гул орудий затих. Пьер, облокотившись на руку, лег и лежал так долго, глядя на продвигавшиеся мимо него в темноте тени. Беспрестанно ему казалось, что с страшным свистом налетало на него ядро; он вздрагивал и приподнимался. Он не помнил, сколько времени он пробыл тут. В середине ночи трое солдат, притащив сучьев, поместились подле него и стали разводить огонь.
Солдаты, покосившись на Пьера, развели огонь, поставили на него котелок, накрошили в него сухарей и положили сала. Приятный запах съестного и жирного яства слился с запахом дыма. Пьер приподнялся и вздохнул. Солдаты (их было трое) ели, не обращая внимания на Пьера, и разговаривали между собой.
– Да ты из каких будешь? – вдруг обратился к Пьеру один из солдат, очевидно, под этим вопросом подразумевая то, что и думал Пьер, именно: ежели ты есть хочешь, мы дадим, только скажи, честный ли ты человек?
– Я? я?.. – сказал Пьер, чувствуя необходимость умалить как возможно свое общественное положение, чтобы быть ближе и понятнее для солдат. – Я по настоящему ополченный офицер, только моей дружины тут нет; я приезжал на сраженье и потерял своих.
– Вишь ты! – сказал один из солдат.
Другой солдат покачал головой.
– Что ж, поешь, коли хочешь, кавардачку! – сказал первый и подал Пьеру, облизав ее, деревянную ложку.
Пьер подсел к огню и стал есть кавардачок, то кушанье, которое было в котелке и которое ему казалось самым вкусным из всех кушаний, которые он когда либо ел. В то время как он жадно, нагнувшись над котелком, забирая большие ложки, пережевывал одну за другой и лицо его было видно в свете огня, солдаты молча смотрели на него.
– Тебе куды надо то? Ты скажи! – спросил опять один из них.
– Мне в Можайск.
– Ты, стало, барин?
– Да.
– А как звать?
– Петр Кириллович.
– Ну, Петр Кириллович, пойдем, мы тебя отведем. В совершенной темноте солдаты вместе с Пьером пошли к Можайску.
Уже петухи пели, когда они дошли до Можайска и стали подниматься на крутую городскую гору. Пьер шел вместе с солдатами, совершенно забыв, что его постоялый двор был внизу под горою и что он уже прошел его. Он бы не вспомнил этого (в таком он находился состоянии потерянности), ежели бы с ним не столкнулся на половине горы его берейтор, ходивший его отыскивать по городу и возвращавшийся назад к своему постоялому двору. Берейтор узнал Пьера по его шляпе, белевшей в темноте.
– Ваше сиятельство, – проговорил он, – а уж мы отчаялись. Что ж вы пешком? Куда же вы, пожалуйте!
– Ах да, – сказал Пьер.
Солдаты приостановились.
– Ну что, нашел своих? – сказал один из них.
– Ну, прощавай! Петр Кириллович, кажись? Прощавай, Петр Кириллович! – сказали другие голоса.
– Прощайте, – сказал Пьер и направился с своим берейтором к постоялому двору.
«Надо дать им!» – подумал Пьер, взявшись за карман. – «Нет, не надо», – сказал ему какой то голос.
В горницах постоялого двора не было места: все были заняты. Пьер прошел на двор и, укрывшись с головой, лег в свою коляску.


Едва Пьер прилег головой на подушку, как он почувствовал, что засыпает; но вдруг с ясностью почти действительности послышались бум, бум, бум выстрелов, послышались стоны, крики, шлепанье снарядов, запахло кровью и порохом, и чувство ужаса, страха смерти охватило его. Он испуганно открыл глаза и поднял голову из под шинели. Все было тихо на дворе. Только в воротах, разговаривая с дворником и шлепая по грязи, шел какой то денщик. Над головой Пьера, под темной изнанкой тесового навеса, встрепенулись голубки от движения, которое он сделал, приподнимаясь. По всему двору был разлит мирный, радостный для Пьера в эту минуту, крепкий запах постоялого двора, запах сена, навоза и дегтя. Между двумя черными навесами виднелось чистое звездное небо.
«Слава богу, что этого нет больше, – подумал Пьер, опять закрываясь с головой. – О, как ужасен страх и как позорно я отдался ему! А они… они все время, до конца были тверды, спокойны… – подумал он. Они в понятии Пьера были солдаты – те, которые были на батарее, и те, которые кормили его, и те, которые молились на икону. Они – эти странные, неведомые ему доселе они, ясно и резко отделялись в его мысли от всех других людей.
«Солдатом быть, просто солдатом! – думал Пьер, засыпая. – Войти в эту общую жизнь всем существом, проникнуться тем, что делает их такими. Но как скинуть с себя все это лишнее, дьявольское, все бремя этого внешнего человека? Одно время я мог быть этим. Я мог бежать от отца, как я хотел. Я мог еще после дуэли с Долоховым быть послан солдатом». И в воображении Пьера мелькнул обед в клубе, на котором он вызвал Долохова, и благодетель в Торжке. И вот Пьеру представляется торжественная столовая ложа. Ложа эта происходит в Английском клубе. И кто то знакомый, близкий, дорогой, сидит в конце стола. Да это он! Это благодетель. «Да ведь он умер? – подумал Пьер. – Да, умер; но я не знал, что он жив. И как мне жаль, что он умер, и как я рад, что он жив опять!» С одной стороны стола сидели Анатоль, Долохов, Несвицкий, Денисов и другие такие же (категория этих людей так же ясно была во сне определена в душе Пьера, как и категория тех людей, которых он называл они), и эти люди, Анатоль, Долохов громко кричали, пели; но из за их крика слышен был голос благодетеля, неумолкаемо говоривший, и звук его слов был так же значителен и непрерывен, как гул поля сраженья, но он был приятен и утешителен. Пьер не понимал того, что говорил благодетель, но он знал (категория мыслей так же ясна была во сне), что благодетель говорил о добре, о возможности быть тем, чем были они. И они со всех сторон, с своими простыми, добрыми, твердыми лицами, окружали благодетеля. Но они хотя и были добры, они не смотрели на Пьера, не знали его. Пьер захотел обратить на себя их внимание и сказать. Он привстал, но в то же мгновенье ноги его похолодели и обнажились.
Ему стало стыдно, и он рукой закрыл свои ноги, с которых действительно свалилась шинель. На мгновение Пьер, поправляя шинель, открыл глаза и увидал те же навесы, столбы, двор, но все это было теперь синевато, светло и подернуто блестками росы или мороза.
«Рассветает, – подумал Пьер. – Но это не то. Мне надо дослушать и понять слова благодетеля». Он опять укрылся шинелью, но ни столовой ложи, ни благодетеля уже не было. Были только мысли, ясно выражаемые словами, мысли, которые кто то говорил или сам передумывал Пьер.
Пьер, вспоминая потом эти мысли, несмотря на то, что они были вызваны впечатлениями этого дня, был убежден, что кто то вне его говорил их ему. Никогда, как ему казалось, он наяву не был в состоянии так думать и выражать свои мысли.
«Война есть наитруднейшее подчинение свободы человека законам бога, – говорил голос. – Простота есть покорность богу; от него не уйдешь. И они просты. Они, не говорят, но делают. Сказанное слово серебряное, а несказанное – золотое. Ничем не может владеть человек, пока он боится смерти. А кто не боится ее, тому принадлежит все. Ежели бы не было страдания, человек не знал бы границ себе, не знал бы себя самого. Самое трудное (продолжал во сне думать или слышать Пьер) состоит в том, чтобы уметь соединять в душе своей значение всего. Все соединить? – сказал себе Пьер. – Нет, не соединить. Нельзя соединять мысли, а сопрягать все эти мысли – вот что нужно! Да, сопрягать надо, сопрягать надо! – с внутренним восторгом повторил себе Пьер, чувствуя, что этими именно, и только этими словами выражается то, что он хочет выразить, и разрешается весь мучащий его вопрос.
– Да, сопрягать надо, пора сопрягать.
– Запрягать надо, пора запрягать, ваше сиятельство! Ваше сиятельство, – повторил какой то голос, – запрягать надо, пора запрягать…
Это был голос берейтора, будившего Пьера. Солнце било прямо в лицо Пьера. Он взглянул на грязный постоялый двор, в середине которого у колодца солдаты поили худых лошадей, из которого в ворота выезжали подводы. Пьер с отвращением отвернулся и, закрыв глаза, поспешно повалился опять на сиденье коляски. «Нет, я не хочу этого, не хочу этого видеть и понимать, я хочу понять то, что открывалось мне во время сна. Еще одна секунда, и я все понял бы. Да что же мне делать? Сопрягать, но как сопрягать всё?» И Пьер с ужасом почувствовал, что все значение того, что он видел и думал во сне, было разрушено.
Берейтор, кучер и дворник рассказывали Пьеру, что приезжал офицер с известием, что французы подвинулись под Можайск и что наши уходят.
Пьер встал и, велев закладывать и догонять себя, пошел пешком через город.
Войска выходили и оставляли около десяти тысяч раненых. Раненые эти виднелись в дворах и в окнах домов и толпились на улицах. На улицах около телег, которые должны были увозить раненых, слышны были крики, ругательства и удары. Пьер отдал догнавшую его коляску знакомому раненому генералу и с ним вместе поехал до Москвы. Доро гой Пьер узнал про смерть своего шурина и про смерть князя Андрея.

Х
30 го числа Пьер вернулся в Москву. Почти у заставы ему встретился адъютант графа Растопчина.
– А мы вас везде ищем, – сказал адъютант. – Графу вас непременно нужно видеть. Он просит вас сейчас же приехать к нему по очень важному делу.
Пьер, не заезжая домой, взял извозчика и поехал к главнокомандующему.
Граф Растопчин только в это утро приехал в город с своей загородной дачи в Сокольниках. Прихожая и приемная в доме графа были полны чиновников, явившихся по требованию его или за приказаниями. Васильчиков и Платов уже виделись с графом и объяснили ему, что защищать Москву невозможно и что она будет сдана. Известия эти хотя и скрывались от жителей, но чиновники, начальники различных управлений знали, что Москва будет в руках неприятеля, так же, как и знал это граф Растопчин; и все они, чтобы сложить с себя ответственность, пришли к главнокомандующему с вопросами, как им поступать с вверенными им частями.
В то время как Пьер входил в приемную, курьер, приезжавший из армии, выходил от графа.
Курьер безнадежно махнул рукой на вопросы, с которыми обратились к нему, и прошел через залу.
Дожидаясь в приемной, Пьер усталыми глазами оглядывал различных, старых и молодых, военных и статских, важных и неважных чиновников, бывших в комнате. Все казались недовольными и беспокойными. Пьер подошел к одной группе чиновников, в которой один был его знакомый. Поздоровавшись с Пьером, они продолжали свой разговор.
– Как выслать да опять вернуть, беды не будет; а в таком положении ни за что нельзя отвечать.
– Да ведь вот, он пишет, – говорил другой, указывая на печатную бумагу, которую он держал в руке.
– Это другое дело. Для народа это нужно, – сказал первый.
– Что это? – спросил Пьер.
– А вот новая афиша.
Пьер взял ее в руки и стал читать:
«Светлейший князь, чтобы скорей соединиться с войсками, которые идут к нему, перешел Можайск и стал на крепком месте, где неприятель не вдруг на него пойдет. К нему отправлено отсюда сорок восемь пушек с снарядами, и светлейший говорит, что Москву до последней капли крови защищать будет и готов хоть в улицах драться. Вы, братцы, не смотрите на то, что присутственные места закрыли: дела прибрать надобно, а мы своим судом с злодеем разберемся! Когда до чего дойдет, мне надобно молодцов и городских и деревенских. Я клич кликну дня за два, а теперь не надо, я и молчу. Хорошо с топором, недурно с рогатиной, а всего лучше вилы тройчатки: француз не тяжеле снопа ржаного. Завтра, после обеда, я поднимаю Иверскую в Екатерининскую гошпиталь, к раненым. Там воду освятим: они скорее выздоровеют; и я теперь здоров: у меня болел глаз, а теперь смотрю в оба».
– А мне говорили военные люди, – сказал Пьер, – что в городе никак нельзя сражаться и что позиция…
– Ну да, про то то мы и говорим, – сказал первый чиновник.
– А что это значит: у меня болел глаз, а теперь смотрю в оба? – сказал Пьер.
– У графа был ячмень, – сказал адъютант, улыбаясь, – и он очень беспокоился, когда я ему сказал, что приходил народ спрашивать, что с ним. А что, граф, – сказал вдруг адъютант, с улыбкой обращаясь к Пьеру, – мы слышали, что у вас семейные тревоги? Что будто графиня, ваша супруга…
– Я ничего не слыхал, – равнодушно сказал Пьер. – А что вы слышали?
– Нет, знаете, ведь часто выдумывают. Я говорю, что слышал.
– Что же вы слышали?
– Да говорят, – опять с той же улыбкой сказал адъютант, – что графиня, ваша жена, собирается за границу. Вероятно, вздор…
– Может быть, – сказал Пьер, рассеянно оглядываясь вокруг себя. – А это кто? – спросил он, указывая на невысокого старого человека в чистой синей чуйке, с белою как снег большою бородой, такими же бровями и румяным лицом.
– Это? Это купец один, то есть он трактирщик, Верещагин. Вы слышали, может быть, эту историю о прокламации?
– Ах, так это Верещагин! – сказал Пьер, вглядываясь в твердое и спокойное лицо старого купца и отыскивая в нем выражение изменничества.
– Это не он самый. Это отец того, который написал прокламацию, – сказал адъютант. – Тот молодой, сидит в яме, и ему, кажется, плохо будет.
Один старичок, в звезде, и другой – чиновник немец, с крестом на шее, подошли к разговаривающим.
– Видите ли, – рассказывал адъютант, – это запутанная история. Явилась тогда, месяца два тому назад, эта прокламация. Графу донесли. Он приказал расследовать. Вот Гаврило Иваныч разыскивал, прокламация эта побывала ровно в шестидесяти трех руках. Приедет к одному: вы от кого имеете? – От того то. Он едет к тому: вы от кого? и т. д. добрались до Верещагина… недоученный купчик, знаете, купчик голубчик, – улыбаясь, сказал адъютант. – Спрашивают у него: ты от кого имеешь? И главное, что мы знаем, от кого он имеет. Ему больше не от кого иметь, как от почт директора. Но уж, видно, там между ними стачка была. Говорит: ни от кого, я сам сочинил. И грозили и просили, стал на том: сам сочинил. Так и доложили графу. Граф велел призвать его. «От кого у тебя прокламация?» – «Сам сочинил». Ну, вы знаете графа! – с гордой и веселой улыбкой сказал адъютант. – Он ужасно вспылил, да и подумайте: этакая наглость, ложь и упорство!..
– А! Графу нужно было, чтобы он указал на Ключарева, понимаю! – сказал Пьер.
– Совсем не нужно», – испуганно сказал адъютант. – За Ключаревым и без этого были грешки, за что он и сослан. Но дело в том, что граф очень был возмущен. «Как же ты мог сочинить? – говорит граф. Взял со стола эту „Гамбургскую газету“. – Вот она. Ты не сочинил, а перевел, и перевел то скверно, потому что ты и по французски, дурак, не знаешь». Что же вы думаете? «Нет, говорит, я никаких газет не читал, я сочинил». – «А коли так, то ты изменник, и я тебя предам суду, и тебя повесят. Говори, от кого получил?» – «Я никаких газет не видал, а сочинил». Так и осталось. Граф и отца призывал: стоит на своем. И отдали под суд, и приговорили, кажется, к каторжной работе. Теперь отец пришел просить за него. Но дрянной мальчишка! Знаете, эдакой купеческий сынишка, франтик, соблазнитель, слушал где то лекции и уж думает, что ему черт не брат. Ведь это какой молодчик! У отца его трактир тут у Каменного моста, так в трактире, знаете, большой образ бога вседержителя и представлен в одной руке скипетр, в другой держава; так он взял этот образ домой на несколько дней и что же сделал! Нашел мерзавца живописца…


В середине этого нового рассказа Пьера позвали к главнокомандующему.
Пьер вошел в кабинет графа Растопчина. Растопчин, сморщившись, потирал лоб и глаза рукой, в то время как вошел Пьер. Невысокий человек говорил что то и, как только вошел Пьер, замолчал и вышел.
– А! здравствуйте, воин великий, – сказал Растопчин, как только вышел этот человек. – Слышали про ваши prouesses [достославные подвиги]! Но не в том дело. Mon cher, entre nous, [Между нами, мой милый,] вы масон? – сказал граф Растопчин строгим тоном, как будто было что то дурное в этом, но что он намерен был простить. Пьер молчал. – Mon cher, je suis bien informe, [Мне, любезнейший, все хорошо известно,] но я знаю, что есть масоны и масоны, и надеюсь, что вы не принадлежите к тем, которые под видом спасенья рода человеческого хотят погубить Россию.
– Да, я масон, – отвечал Пьер.
– Ну вот видите ли, мой милый. Вам, я думаю, не безызвестно, что господа Сперанский и Магницкий отправлены куда следует; то же сделано с господином Ключаревым, то же и с другими, которые под видом сооружения храма Соломона старались разрушить храм своего отечества. Вы можете понимать, что на это есть причины и что я не мог бы сослать здешнего почт директора, ежели бы он не был вредный человек. Теперь мне известно, что вы послали ему свой. экипаж для подъема из города и даже что вы приняли от него бумаги для хранения. Я вас люблю и не желаю вам зла, и как вы в два раза моложе меня, то я, как отец, советую вам прекратить всякое сношение с такого рода людьми и самому уезжать отсюда как можно скорее.
– Но в чем же, граф, вина Ключарева? – спросил Пьер.
– Это мое дело знать и не ваше меня спрашивать, – вскрикнул Растопчин.
– Ежели его обвиняют в том, что он распространял прокламации Наполеона, то ведь это не доказано, – сказал Пьер (не глядя на Растопчина), – и Верещагина…
– Nous y voila, [Так и есть,] – вдруг нахмурившись, перебивая Пьера, еще громче прежнего вскрикнул Растопчин. – Верещагин изменник и предатель, который получит заслуженную казнь, – сказал Растопчин с тем жаром злобы, с которым говорят люди при воспоминании об оскорблении. – Но я не призвал вас для того, чтобы обсуждать мои дела, а для того, чтобы дать вам совет или приказание, ежели вы этого хотите. Прошу вас прекратить сношения с такими господами, как Ключарев, и ехать отсюда. А я дурь выбью, в ком бы она ни была. – И, вероятно, спохватившись, что он как будто кричал на Безухова, который еще ни в чем не был виноват, он прибавил, дружески взяв за руку Пьера: – Nous sommes a la veille d'un desastre publique, et je n'ai pas le temps de dire des gentillesses a tous ceux qui ont affaire a moi. Голова иногда кругом идет! Eh! bien, mon cher, qu'est ce que vous faites, vous personnellement? [Мы накануне общего бедствия, и мне некогда быть любезным со всеми, с кем у меня есть дело. Итак, любезнейший, что вы предпринимаете, вы лично?]
– Mais rien, [Да ничего,] – отвечал Пьер, все не поднимая глаз и не изменяя выражения задумчивого лица.
Граф нахмурился.
– Un conseil d'ami, mon cher. Decampez et au plutot, c'est tout ce que je vous dis. A bon entendeur salut! Прощайте, мой милый. Ах, да, – прокричал он ему из двери, – правда ли, что графиня попалась в лапки des saints peres de la Societe de Jesus? [Дружеский совет. Выбирайтесь скорее, вот что я вам скажу. Блажен, кто умеет слушаться!.. святых отцов Общества Иисусова?]
Пьер ничего не ответил и, нахмуренный и сердитый, каким его никогда не видали, вышел от Растопчина.

Когда он приехал домой, уже смеркалось. Человек восемь разных людей побывало у него в этот вечер. Секретарь комитета, полковник его батальона, управляющий, дворецкий и разные просители. У всех были дела до Пьера, которые он должен был разрешить. Пьер ничего не понимал, не интересовался этими делами и давал на все вопросы только такие ответы, которые бы освободили его от этих людей. Наконец, оставшись один, он распечатал и прочел письмо жены.
«Они – солдаты на батарее, князь Андрей убит… старик… Простота есть покорность богу. Страдать надо… значение всего… сопрягать надо… жена идет замуж… Забыть и понять надо…» И он, подойдя к постели, не раздеваясь повалился на нее и тотчас же заснул.
Когда он проснулся на другой день утром, дворецкий пришел доложить, что от графа Растопчина пришел нарочно посланный полицейский чиновник – узнать, уехал ли или уезжает ли граф Безухов.
Человек десять разных людей, имеющих дело до Пьера, ждали его в гостиной. Пьер поспешно оделся, и, вместо того чтобы идти к тем, которые ожидали его, он пошел на заднее крыльцо и оттуда вышел в ворота.
С тех пор и до конца московского разорения никто из домашних Безуховых, несмотря на все поиски, не видал больше Пьера и не знал, где он находился.


Ростовы до 1 го сентября, то есть до кануна вступления неприятеля в Москву, оставались в городе.
После поступления Пети в полк казаков Оболенского и отъезда его в Белую Церковь, где формировался этот полк, на графиню нашел страх. Мысль о том, что оба ее сына находятся на войне, что оба они ушли из под ее крыла, что нынче или завтра каждый из них, а может быть, и оба вместе, как три сына одной ее знакомой, могут быть убиты, в первый раз теперь, в это лето, с жестокой ясностью пришла ей в голову. Она пыталась вытребовать к себе Николая, хотела сама ехать к Пете, определить его куда нибудь в Петербурге, но и то и другое оказывалось невозможным. Петя не мог быть возвращен иначе, как вместе с полком или посредством перевода в другой действующий полк. Николай находился где то в армии и после своего последнего письма, в котором подробно описывал свою встречу с княжной Марьей, не давал о себе слуха. Графиня не спала ночей и, когда засыпала, видела во сне убитых сыновей. После многих советов и переговоров граф придумал наконец средство для успокоения графини. Он перевел Петю из полка Оболенского в полк Безухова, который формировался под Москвою. Хотя Петя и оставался в военной службе, но при этом переводе графиня имела утешенье видеть хотя одного сына у себя под крылышком и надеялась устроить своего Петю так, чтобы больше не выпускать его и записывать всегда в такие места службы, где бы он никак не мог попасть в сражение. Пока один Nicolas был в опасности, графине казалось (и она даже каялась в этом), что она любит старшего больше всех остальных детей; но когда меньшой, шалун, дурно учившийся, все ломавший в доме и всем надоевший Петя, этот курносый Петя, с своими веселыми черными глазами, свежим румянцем и чуть пробивающимся пушком на щеках, попал туда, к этим большим, страшным, жестоким мужчинам, которые там что то сражаются и что то в этом находят радостного, – тогда матери показалось, что его то она любила больше, гораздо больше всех своих детей. Чем ближе подходило то время, когда должен был вернуться в Москву ожидаемый Петя, тем более увеличивалось беспокойство графини. Она думала уже, что никогда не дождется этого счастия. Присутствие не только Сони, но и любимой Наташи, даже мужа, раздражало графиню. «Что мне за дело до них, мне никого не нужно, кроме Пети!» – думала она.
В последних числах августа Ростовы получили второе письмо от Николая. Он писал из Воронежской губернии, куда он был послан за лошадьми. Письмо это не успокоило графиню. Зная одного сына вне опасности, она еще сильнее стала тревожиться за Петю.
Несмотря на то, что уже с 20 го числа августа почти все знакомые Ростовых повыехали из Москвы, несмотря на то, что все уговаривали графиню уезжать как можно скорее, она ничего не хотела слышать об отъезде до тех пор, пока не вернется ее сокровище, обожаемый Петя. 28 августа приехал Петя. Болезненно страстная нежность, с которою мать встретила его, не понравилась шестнадцатилетнему офицеру. Несмотря на то, что мать скрыла от него свое намеренье не выпускать его теперь из под своего крылышка, Петя понял ее замыслы и, инстинктивно боясь того, чтобы с матерью не разнежничаться, не обабиться (так он думал сам с собой), он холодно обошелся с ней, избегал ее и во время своего пребывания в Москве исключительно держался общества Наташи, к которой он всегда имел особенную, почти влюбленную братскую нежность.