Как вывести данные из командной строки или PowerShell в текстовый файл

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

Как сохранить вывод командной строки в файл

Чтобы сохранить вывод команды в текстовый файл с помощью командной строки, выполните следующие действия:

  1. Откройте командную строку от имени администратора.
  2. Введите следующую команду, чтобы сохранить вывод в текстовый файл и нажмите Enter:

    ваша-команда > c:\путь\папка\

    В этой команде обязательно замените «ваша-команда» на ваш запрос в командной строке, а «c:\путь\папка\» на путь и имя файла для хранения вывода.

  3. (Необязательно) Если вы хотите сохранить вывод и просмотреть результат на экране, используйте эту команду и нажмите Enter:

    ваша-команда > c:\путь\папка\ | type c:\путь\папка\

    В этой команде обязательно замените «ваша-команда» на ваш запрос в командной строке, а «c:\путь\папка\» на путь и имя файла для хранения вывода.

    Совет: если у вас возникли проблемы с просмотром файла, вы можете использовать команду type c:\путь\папка\ после шага 3.

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

ⓘ PowerShell

PowerShell — расширяемое средство автоматизации от Microsoft с открытым исходным кодом, состоящее из оболочки с интерфейсом командной строки и сопутствующего языка сценариев. Впервые публично язык был продемонстрирован на Профессиональной конференции разработчиков в сентябре 2003 года под кодовым названием Monad. Изначально средство выпущено как компонент Windows под названием Windows PowerShell. Открытый исходный код был выпущен с началом разработки PowerShell Core в августе 2016 года.

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 и Windows Server 2012.

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

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

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.

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

Имена и синтаксис командлетов

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

Команды Windows PowerShell следуют определенным правилам именования:

  • Команды Windows PowerShell состоят из глагола и существительного (всегда в единственном числе), разделенных тире. Глагол задает определенное действие, а существительное определяет объект, над которым это действие будет совершено. Команды записываются на английском языке. Пример: Get-Help вызывает интерактивную справку по синтаксису Windows PowerShell.

  • Перед параметрами ставится символ «-». Например: Get-Help –Detailed.

  • В Windows PowerShell также включены псевдонимы многих известных команд. Это упрощает знакомство и использование Windows PowerShell. Пример: команды help (классический стиль Windows) и man (классический стиль Unix) работают так же, как и Get-Help.

Например, Get-Process (получить информацию о процессе), Stop-Service (остановить службу), Clear-Host (очистить экран консоли) и т.д. Чтобы просмотреть список командлетов, доступных в ходе текущего сеанса, нужно выполнить командлет Get-Command.

По умолчанию командлет Get-Command выводит сведения в трех столбцах: CommandType, Name и Definition. При этом в столбце Definition отображается синтаксис командлетов (многоточие (…) в столбце синтаксиса указывает на то, что данные обрезаны).

Замечание. Косые черты (/ и \) вместе с параметрами в оболочке Windows PowerShell не используются.

В общем случае синтаксис командлетов имеет следующую структуру:

имя_командлета –параметр1 -параметр2 аргумент1 аргумент2

Здесь параметр1 – параметр (переключатель), не имеющий значения; параметр2 – имя параметра, имеющего значение аргумент1; аргумент2 – параметр, не имеющий имени. Например, командлет Get-Process имеет параметр Name, который определяет имя процесса, информацию о котором нужно вывести. Имя этого параметра указывать необязательно. Таким образом, для получения сведений о процессе Far можно ввести либо команду Get-Process -Name Far, либо команду Get-Process Far.

Запускаем и подготавливаем Powershell

Установим репозиторий Chocolatey

Для начала запустим PowerShell. Обязательно от имени Администратора.

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

  • Для изменения уровня безопасности — пишем в командной строке PowerShell: Set-ExecutionPolicy Bypass -Scope Process -Force
  • Добавляем репозиторий Chocolatey и делаем его доверенным. Именно с него будет скачиваться весь совт. Последовательно набираем 2 командлета (так называются в PowerShell команды): Get-PackageProvider —Name Chocolatey -ForceBootstrap Set-PackageSource -Name Chocolatey -Trusted

Всё. Теперь ваша система готова. Давайте что-нибудь установим.

Установка приложений с помощью командлетов Powershell Нерекомендуемый способ

Для примера установим браузер Chrome. Пишем в командной строке повершела командлет Install-Package, потом через пробел параметры, а именно: название нашего приложения — googlechrome, потом ключ -ProviderName, которым мы явно зададим с какого репозитория скачивать совт и название репозитория chocolatey. В самом конце добавим 2 ключа: -Verbose и -force. Первый для того, что бы видеть процесс инсталляции, второй — для игнорирования запросов, например на перезапись файла. В конечном итоге у вас должна получиться такая строка:

Install-Package googlechrome -ProviderName chocolatey -Verbose -force

Далее для установки другого приложения вам нужно только изменять названия пакета. Например, что бы установить архиватор WinRAR — нужно изменить googlechrome на winrar:

Install-Package winrar -ProviderName chocolatey -Verbose -force

Для того, что бы посмотреть, что вы там себе наустанавливали — нужно набрать командлет Get-Package без всяких параметров:

Get-Package

Он выведет на экран список всех установленных приложений.

Но Opera, Mozilla FireFox и ещё фигова туча приложений, которые есть в репозитории chocolatey, у вас не будут устанавливаться. Повершел ругнётся на неизвестный ему командлет, например на:

«Get-OSArchitectureWidth» не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего повторите попытку

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

Uninstall-Package opera

Короче, давайте срезюмируем. Данный метод имеет хоть и один, но очень серьёзный недостаток: несмотря на наличие приложения в репозитории — далеко не каждое может быть установлено. Выяснить это можно исключительно методом научного тыка.

Поэтому рекомендую использовать собственную утилиту проекта Chocolatey.

Установка приложений с помощью Chocolatey Рекомендуемый способ

Репозиторий Chocolatey содержит постоянно обновляющуюся базу из более чем 5800 бесплатных и условно-бесплатных приложений.

Устанавливаем модуль Chocolatey. Он имеет свой синтаксис, зато приложения можно будет устанавливать, не только из повершела, но и из командной строки. Это делается всего одной командой:

iex ((New-Object ).DownloadString (''))

Если ругнётся на:

Невозможно загрузить файл \chocolatey\chocInstall\tools\, так как выполнение сценариев отключено в этой системе.

То измените уровень безопасности командой выше.

Это всё что нужно сделать. Теперь вы можете устанавливать приложения, используя простейший синтаксис проекта Chocolatey. Для полноценного управления установкой приложений нам потребуется 5 команд:

  • cinst название_пакета — установка приложения
  • cuninst название_пакета — удаление приложения
  • cup название_пакета — обновление приложения
  • cup all — обновление всех установленных приложений
  • clist название_пакета — поиск приложений

Например, для установки браузера Opera — запустим экземпляр командной строки CMD или PowerShell от имени Администратора. В адресную строку введём название команды cinst, название приложения opera и пару параметров:

cinst opera ––force ‑y

Параметр ‑‑force — будет игнорировать все ошибки, а так-же используется для принудительной переустановки приложения. Ключ ‑y — будет отвечать на все вопросы скриптов, установщика и системы утвердительно.

Для удаления — набирайте cuninst, название программы и ключ -y, например:

cuninst opera -y

А как же искать приложения? Для примера узнаем какое название имеет в каталоге Chocolatey десктопный Telegram. Для этого пишем команду clist и через пробел предполагаемое название пакета:

clist telegram

Как правило, первая же строчка и будет названием пакета с указанием её текущей версии в каталоге.

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

Как то так.

← Предыдущая Следующая → Перевод проекту Сумма в российских рублях

  • Перевод осуществляется, через сервис электронных платежей Яндекс.Деньги
  • Сумма в российских рублях
  • В случае перевода с банковской карты — конвертация валюты производиться по курсу вашего банка
  • Комиссия 0%
ПоддержатьПопулярные заметки Не включается сетевое обнаружение в Windows Как сохранить сетевой пароль? Калькулятор в Windows

Комментарии

  • Оставьте первый комментарий — будьте первым

Отладка сценариев

Break All

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

Чтобы использовать отладчик в сеансе консоли, нажмите Ctrl+Break

В Windows PowerShell ISE можно нажать Ctrl+B или, щёлкнуть в меню «Отладка» и выбрать команду «Break All».

Удалённое редактирование

В текущей Windows PowerShell ISE можно открывать и редактировать файл напрямую в удалённом сеансе Windows PowerShell. С помощью новой команды «PSEdit», вы можете непосредственно редактировать файлы как локально, так и в удалённых сеансах.

Следующий код показывает пример в действии:

[Cloud01]: PS C:\> PSEdit C:\WinDemo\

При выполнении PSEdit, он откроет файл в ISE, где можно внести изменения, сохранить их на удалённый компьютер и повторно выполнить код.

Удалённая отладка

Расширяя возможности удалённого редактирования, вы теперь можете отлаживать запущенный на удалённом сеансе с ISE скрипт.

Командлет Set-PsBreakpoint задаёт в коде точку останова, а затем можно использовать командлет Write-Debug и вывести полезную для использования в ваших сценариях, если вы сталкиваетесь с точкой останова, информацию. В этот момент вас переместит в отладчик, где потребуется посмотреть на имеющуюся информацию и выполнить некоторую дополнительную работу. Рисунок ниже показывает эту операцию.

Пример кода удалённой отладки в Windows Powershell ISE

Когда скрипт встречает в удалённом сеансе точку останова, он отображает сообщение, указывающее, что это сделано. Следующий рисунок показывает пример сообщения.

Предупреждение об останове в удалённом сеансе

Не все удалённые сеансы будут поддерживать сеанс удалённой отладки, но при подключении к удалённому сеансу с помощью командлета Connect-PSSession, вы увидите результат, показанный на рисунке ниже. Вывод также позволяет узнать её доступность.

Доступность удалённой отладки

Если удалённая отладка доступна, вы можете подключиться к сеансу с помощью командлета Enter-PSSession, который подключит вас непосредственно к отладчику.

Удалённый отладчик в действии

Отладка фонового задания

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

Теперь, в Server 2016, Windows PowerShell вводит новый командлет Debug-Job, который даёт вам возможность отладить эти фоновые задания более эффективно. Следующий рисунок показывает использование этого командлета. Обратите внимание на то, как Debug-Job показывает вам линию и характеристики прерывания фоновой работы.

Командлет Debug-Job, выводящий сообщение об ошибке в фоновом задании

Чтобы добраться до этого состояния останова, можно воспользоваться тем же командлетом Set-PSBreakPoint или Wait-Debugger. Они используются для «приостановки» сценария и ввода отладчика. Вы можете ввести эти командлеты в свой скрипт, а затем проверить состояние задания. Так вы узнаете, столкнулся ли он с точкой останова и готова ли отладка. Рисунок ниже показывает пример этого.

Состояние фонового задания

Отладка Runspaces

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

Подробнее. Больше информации о Runspaces и его использовании на -use-of-powershell- runspaces-part-1/.

Следующий рисунок отображает создание Runspaces.

Создание Runspaces

Для отладки Runspaces вам необходимо получить его «ID», рисунок ниже показывает доступные runspaces, а затем ввести сеанс отладки с помощью командлета Debug-Runspace.

Отладка runspace

Первый runspace, ID 1, всегда исходный сеанс Windows PowerShell, в котором вы находитесь. Для более глубокого изучения runspacees в вашей среде, используйте предыдущие ссылки.

Запуск PowerShell от имени администратора

Также поиск в меню «Пуск» — это самый простой способ запустить PowerShell от имени администратора. Для этого нужно воспользоваться поиском и когда программа будет найдена, кликнуть по ней правой кнопкой мышки. В открывшемся меню будет доступен вариант запуска от имени администратора. Данный способ запуска от имени администратора также доступен в Windows 7 и Windows 10

Кроме этого, в Windows 10 есть дополнительная возможность, которая позволяет запускать PowerShell как с правами пользователя, так и от имени администратора. Чтобы воспользоваться этим вариантом нужно кликнуть правой кнопкой мышки по кнопке «Пуск» и в открывшемся меню выбрать «PowerShell».

Если же в этом меню вместо PowerShell у вас отображается обычная командная строка, то это можно исправить. Откройте меню «Параметры» (комбинация клавиш Win-i) и перейдите в раздел «Персонализация – Панель задач». Здесь нужно включить опцию, которая заменяет командную строку на PowerShell, после чего описанный выше способ будет работать.

Конфигурируем PowerShell

Если стандартное отображение PowerShell в виде темно-синего окна консоли с белым текстом вам не подходит или стандартный шрифт кажется слишком мелким, поменяйте шаблон по умолчанию. Для этого правой кнопкой мыши щелкните по рамке консоли и в контекстном меню выберите «Свойства».

Откроется окно с вкладками «Настройки», «Шрифт», «Расположение» и «Цвета». Проверьте эффект от различных настроек. Когда будете довольны внешним видом программы, примените изменения нажатием на «ОК».

Конфигурируем PowerShell
Конфигурируем PowerShell

Провайдер AD

PowerShell позволяет представлять различные системы в виде дополнительных дисков компьютера с помощью так называемых провайдеров. Например, в состав поставки PowerShell входит провайдер реестра и мы можем перемещаться по реестру с помощью знакомых и любимых всеми нами команд cd и dir (для любителей UNIX команда ls тоже поддерживается).

Провайдера Active Directory в составе PowerShell нет, но его можно установить, зайдя на сайт проекта расширений PowerShell — PowerShell Community Extensions:

Это проект с открытым кодом, который добавляет большое количество команд в систему PowerShell, а кроме того, устанавливает провайдера AD.

Использование провайдера Active Directory

После установки расширений, набрав Get-PSDrive, мы видим, что к прежним дискам добавился диск текущей активной директории.

Теперь мы можем зайти в эту директорию, набрав cd и указав имя домена, а в любом контейнере использовать команду dir, чтобы увидеть его содержимое.

С объектами дальше можно работать так же, как это делалось с применением адаптера ADSI.

Кроме того, можно вызывать и другие привычные команды управления файлами (например, del).

К несомненным преимуществам использования провайдера можно отнести:

естественность представления структуры директории — директория AD по своей природе иерархична и похожа на файловую систему;

удобство нахождения объектов — применять cd и dir куда удобнее, чем составлять запрос на языке LDAP.

Из недостатков бросаются в глаза:

  • сложность внесения изменений в объекты — провайдер помогает легко добраться до объекта, но чтобы что-либо поменять, нам опять приходится использовать все те же директорные объекты, что и в методе ADSI, а для этого надо оперировать на низком уровне служебных методов и атрибутов AD;
  • необходимость дополнительной установки — провайдер не входит в состав PowerShell, и для его применения необходимо скачать и установить расширения PowerShell;
  • третьестороннее происхождение — расширения PowerShell не являются продуктом компании Microsoft. Они созданы энтузиастами проекта. Вы вольны их использовать, но за технической поддержкой придется обращаться не в Microsoft, а на сайт проекта.

Справка по форматированию: Format-Table и Format-List.

Для этих различных командлетов большая часть вывода была в табличных форматах. Это отображает данные в строках и столбцах с заголовками. Чтобы отобразить записи, перечисленные с их свойствами по отдельности, направьте командлет в Format-List.

Иногда у вас есть выход, который становится слишком широким для окна Powershell. Когда это происходит, Powershell заставляет его выводить список. Чтобы убедиться, что вы храните его в формате таблицы, направьте вывод Format-Table.

Оператор &

Если необходимо указать полный путь к исполняемому файлу, то можно воспользоваться оператором & (оператор вызова). Он позволяет выполнить строку текста, указанную в кавычках, как единую команду. Например:

& ′C:Program ′

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

& ′C:Program ′  ′Hello, world′

При желании можно указать нескольких аргументов через запятую:

& ′C:Program ′  ′Hello,′, ′ world′

Для удобства команду и аргументы можно поместить в переменные:

$exe = ′C:Program ′$arg1 = ′Hello′$arg2 = ′world′& $exe $arg1 $arg2

Ну и если аргументов много, то их можно объединить, воспользовавшись такой конструкцией:

$exe = ′C:Program ′$allargs = @(′Hello,′,′world′)& $exe $allargs

Доступ к WMI

Как мы знаем, Windows Management Instrumentation (WMI) — это реализация компанией Microsoft стандарта Common Information Model (CMI). В большинстве случаев WMI применяется ИT-специалистами для получения информации об аппаратном и программном обеспечении, установленном на данном компьютере. Как мы увидим в следующем примере, использование Windows PowerShell существенно облегчает доступ к информации, хранимой в WMI (рис. 17).

В первой строке мы применяем команду get-wmiobject для получения информации о файле, используемом для свопинга памяти на диск и сохранения этой информации в переменной $pfu :

PS C:\> $pfu = get-wmiobject – class ‘win32_pageFileUsage’

PS C:\> $pfu | get-member –membertype property | where_object { $_.name –nomatch ‘_’ }

Обычно для нахождения информации по определенному классу можно использовать команду get-member без указания параметров, но в нашем примере нас интересуют только доступные свойства и только те из них, которые не содержат в имени символ подчеркивания. У внимательного читателя может возникнуть вопрос: каким образом мы узнали о существовании класса win32_pageFileUsage ? Ведь известно, что в WMI поддерживается более тысячи классов, помимо этого ряд приложений добавляет свои классы. Вы можете применить команду:

Доступ к WMI

PS C:\> get-wmiobject –list

для получения списка всех существующих в системе классов. После того как мы определили доступные нам свойства класса, мы выводим содержимое интересующих нас свойств на экран:

PS C:\> $; $

Вторая часть нашего примера посвящена другому классу — win32_DiskDrive , в котором хранится информация о дисках, установленных в системе. Этот класс — пример WMI-класса, содержащего более одного объекта. В нашем примере мы определяем значение свойства caption первого диска, установленного в системе:

PS C:\> $

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Понравилась статья? Поделиться с друзьями:
Adblock
detector