Фоновое исполнение заданий
В Windows PowerShell есть возможность фонового исполнения заданий, она представляет собой механизм, с помощью которого можно запустить на выполнение команду (например, которая долго выполняется) в фоновом режиме, т.е. после запуска Вы возвращаетесь в текущую сессию и можете продолжить работу, не дожидаясь окончания работы команды. Данная возможность Вам понадобится тогда, когда у Вас возникнет необходимость запустить команду, работа которой занимает достаточно продолжительное время, а как Вы знаете, в течение этого времени сессия оболочки PowerShell блокируется до завершения работы команды, а Вам нужно продолжать работать.
Всеми заданиями, которые запущенны в фоновом режиме, Вы можете управлять, например, посмотреть список заданий, остановить работу задания, удалить задание, и, конечно же, посмотреть результат работы задания.
В Windows PowerShell для работы с фоновыми заданиями есть следующие командлеты:
- Start-Job – запустить фоновую задачу;
- Stop-Job – остановить фоновую задачу
- Get-Job – посмотреть список фоновых задач;
- Receive-Job – посмотреть результат выполнения фоновой задачи;
- Remove-Job – удалить фоновую задачу;
- Wait-Job – перевести фоновую задачу на передний план, для того чтобы дожидаться ее окончания.
Для запуска в фоновом режиме необходимо написать команду Start-Job, а в фигурных скобках {} команду или набор команд, которые необходимо выполнить в фоновом режиме.
Например, давайте запустим какую-нибудь задачу (показать список служб) в фоновом режиме, затем посмотрим на список фоновых заданий и выведем на экран результат работы нашего задания (т.е. список служб).
Запуск задачи в фоновом режиме
Start-Job {Get-Service}
1 |
Start-Job {Get-Service} |
Смотрим на список задач запущенных в фоновом режиме
Get-Job
1 |
Get-Job |
Отображаем результат работы задания Job1
Receive-Job Job1
1 |
Receive-Job Job1 |
Как видим, у нас появилась задача со статусом «Completed», т.е. она уже выполнилась (просто Get-Service отрабатывает быстро).
Для того чтобы посмотреть результат работы фоновой задачи, т.е. командлета Get-Service, мы выполнили команду Receive-Job и передали ей имя задания (можно и значение идентификатора). В результате у нас отобразился список служб.
Получаем список установленных программ с помощью Windows PowerShell
В первом способе будет использоваться стандартный компонент системы — Windows PowerShell. Для его запуска вы можете нажать клавиши Win+R на клавиатуре и ввести powershell
или же использовать поиск Windows 10 или 8 для запуска.
Для того, чтобы отобразить полный список установленных на компьютере программ достаточно ввести команду:
И для облегчения этой задачи существуют программы с интуитивно понятным интерфейсом, которые предоставляют информацию о потреблении сетевых данных без осложнений. Программа будет контролировать все программы, которые обращаются к Интернету. Во многих случаях есть программы, которые загружаются во время запуска операционной системы и остаются незамеченными пользователем. Но они не подрывают скорость сети.
Программа имеет свои функции, распределенные по четырем вкладкам. График — это представление, соответствующее количеству данных, которые перемещаются в сети, причем каждый цвет на графике представляет потребление определенной программы. Брандмауэр — это функция, которая позволяет блокировать одну или несколько программ, которые потребляют данные одним щелчком мыши. Чтобы заблокировать программу, просто нажмите на значок в формате «пламя».
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize
Результат будет выдан прямо в окне PowerShell в виде таблицы.
Для того, чтобы автоматически экспортировать список программ в текстовый файл, команду можно использовать в следующем виде:
Сеть — это расширенная функция, позволяющая просматривать все подключенные устройства в сети, она доступна только в платной версии программы. Оповещения — это уведомления о сетевой диагностике и запущенных программах. В идеальном случае подключается только операционная система — другие программы должны быть индивидуально проверены на разрешение доступа к сети.
Чтобы заблокировать доступ, просто используйте функцию межсетевого экрана. Для того, чтобы компьютер работал отлично, помимо стабильной операционной системы, необходимо также установить соответствующие драйверы для каждого компонента оборудования, такого как звуковая карта, беспроводная сеть, видео и другие. Драйвер — небольшая программа, которая объединяет аппаратное обеспечение с операционной системой. Без этой программы устройство может работать некорректно.
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize > D:\programs-list.txt
После выполнения указанной команды список программ будет сохранен в файл programs-list.txt на диске D. Примечание: при указании корня диска C для сохранения файла вы можете получить ошибку «Отказано в доступе», если вам нужно сохранить список именно на системный диск, создайте на нем какую-либо свою папку на нем (и сохраняйте в него), либо запускайте PowerShell от имени администратора.
Во многих случаях операционные системы уже имеют широкую поддержку самых популярных устройств. Однако, когда какой-либо компонент не поддерживается автоматически системой, вы должны установить наиболее подходящий драйвер для устройства. Чтобы облегчить задачу администрирования периферийных устройств, существуют программы, которые отвечают за перечисление всех компонентов компьютера, проверку работоспособности драйвера, резервное копирование и, при необходимости, поиск установщика в Интернете.
После установки запустите программу и создайте учетную запись, в которой будет выпущен доступ к службе обновления драйверов, предлагаемой разработчиком программы. Категория «Загрузка драйверов и информация» позволяет программе выполнять полную инвентаризацию вашего компьютера. Через этот инвентарь программа отобразит все ваше оборудование и версии установленных драйверов. Вы также можете проверить наличие обновлений, просмотреть дополнительные сведения о компонентах компьютера и определить, не работает ли какой-либо компонент.
Еще одно дополнение — вышеописанный способ сохраняет список только программ для рабочего стола Windows, но не приложений из магазина Windows 10. Для получения их списка используйте следующую команду:
Get-AppxPackage | Select Name, PackageFullName |Format-Table -AutoSize > D:\store-apps-list.txt
Подробнее о списке таких приложений и операциях над ними в материале: .
Открываем файл и читаем его содержимое с Get-Content в Powershell
Для открытия файлов и чтения его содержимого используется команда Powershell Get-Content. В этой статье рассмотрим работу команды с открытием файла, построчным чтением, поиском по содержимому строки на примерах.
Получение данных
Для открытия файла ‘C:\text.txt’ можно использовать следующую команду:
Если у вас множество файлов или вы не уверены в назывании, то вы можете использовать подстановку. Символы подстановок бывают следующих типов:
- ‘*’ — говорит об неизвестном количестве символов;
- — говорит, что в этом месте может быть буква ‘a’ или ‘b’;
- ? — обозначает один неизвестный символ.
Каждый из символов выше можно применять вместе и неограниченное число раз, в любой части пути и имени.
В этом примере я открою сразу два файла: lmhosts и hosts:
Следующие примеры вернут аналогичный результат:
Для похожей фильтрации есть следующие параметры, которые так же позволяют использовать символы подстановок:
- Include — в этом параметре мы добавляем шаблон, по которому будем включать файл;
- Exclude — с помощью этого параметра исключает файлы;
- Filter — исключает результаты.
Для каждого из этих параметров есть обязательно условие — использовать знак ‘*’ в конце пути.
Так мы вернем все файлы с расширением ‘.txt’:
В отличие от Filter, в Include и Exclude мы можем использовать несколько значений. В этом примере мы откроем файлы формата ‘.txt’ и ‘.ini’:
Полное и построчное чтение с поиском
По умолчанию, если мы будем передавать результат команды через конвейер Powershell вывод будет построчный. Это может составить проблему, так как при дополнительных условиях у нас будет возвращаться одна строка, а не весь текст:
Что бы текст передавался полностью, а не построчно — используйте параметр Raw:
Если вам вдруг понадобится выводить по 2 или более строк за раз, можно указать их количество через ReadCount:
Разделение файла
Файл выводится построчно из-за делиметра (разделителя), который по умолчанию равен ‘\n’ (идентификатор новой строки). Мы можем разделить файл иначе, например, использовав точку с запятой:
То есть результат выше — это массив. В массивах Powershell мы можем получать содержимое по индексам. В следующем примере я просто уберу точку с запятой:
Подсчет количества строк
Построчный вывод с командой Powershell позволяет посчитать количество строк во всем файле. Для подсчета используется команда Measure-Object:
Если нужна только цифра, а не объект, можно сделать так:
Кодировки
В параметре -Encoding можно указать следующие кодировки:
- ASCII
- BigEndianUnicode
- BigEndianUTF32
- Byte
- Default
- OEM
- Unicode
- UTF7
- UTF8
- UTF32
Чтения файла под другим пользователем
В этом командлете не предусмотрена возможность открытия файла под другим пользователем. При любых попытках вы будете получать ошибки:
- Access to the path is denied
- The FileSystem provider supports credentials only on the New-PSDrive cmdlet. Perform the operation again withoutspecifying credentials.
Для обхода этих ошибок, если у вас нет другого выхода, нужно использовать Invoke-Command (команда удаленного подключения). Для ее настройки могут потребоваться дополнительные настройки описанные в другой статье.
Как с помощью PowerShell установить роли и компоненты Windows Server?
Для установки ролей и компонентов на Windows Server используется командлет Install-WindowsFeature.
Чтобы установить роль DNS-сервера и инструменты управления (включая модуль Powershell DNSServer) на текущий сервер, выполните следующую команду:
Install-WindowsFeature DNS -IncludeManagementTools
Установка роли «Active Directory Domain Services»:
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
По умолчанию командлет устанавливает все зависимые роли и компоненты. Чтобы отобразить список зависимостей перед установкой, используйте опцию -WhatIf:
Install-WindowsFeature -Name UpdateServices -WhatIf
Чтобы установить роль узла сеанса удалённого рабочего стола, роль лицензирования RDS и инструменты удалённого управления RDS, используйте следующую команду:
Install-WindowsFeature -ComputerName ИМЯ_КОМПЬЮТЕРА RDS-RD-Server, RDS-Licensing -IncludeAllSubFeature -IncludeManagementTools -Restart
Если вы добавите параметр -Restart, ваш сервер при необходимости будет автоматически перезагружен.
Вы также можете установить компонент с помощью следующей команды. Например, чтобы установить роль SMTP-сервера:
Get-WindowsFeature -Name SMTP-Server | Install-WindowsFeature
Параметры
Строго говоря, следуя духу единообразного именования в PowerShell, все передаваемые командлету имена параметров должны следовать за символом «-». Однако для простоты написания названия некоторых параметров можно опускать. Например, для вызова справки по командлету Get-Content вместо полного указания
можно ввести команду
Параметр может иметь какое-либо значение (в только что приведенном примере значением параметра name являлось ) или не иметь его. В этом случае он является аналогом переключателя какой-либо функциональности команды. Например, если необходимо получить полную информацию о командлете , введите
Полезные командлеты Windows PowerShell
В данном разделе я перечислю командлеты PowerShell, которые Вы точно будете использовать.
- Get-Help – показывает справку по командлету, функции и общую справку по Windows PowerShell. Справка бывает нескольких типов: краткая, детальная, полная и вывод только примеров;
- Update-Help — загружает и устанавливает новые файлы справки, т.е. обновление справки;
- Get-Command – командлет поиска нужной команды, можно искать как по глаголу, так и по существительному, также возможно использование маски, если Вы не знаете точное наименование глагола или существительного;
- Get-Alias – показывает псевдонимы, все или конкретной команды;
- Get-PSDrive – показывает подключенные диски;
- Get-Member – выводит свойства и методы, которые есть у объекта;
- Get-WindowsFeature – выводит сведения о доступных ролях и компонентах сервера;
- Install-WindowsFeature (эквивалентен Add-WindowsFeature) — устанавливает роли или компоненты на указанный сервер;
- Uninstall-WindowsFeature (эквивалентен Remove-WindowsFeature) – удаляет роли или компонента сервера;
- Get-History — возвращает список команд, введенных в ходе текущей сессии.
Описание
Командлет Get-Process получает процессы, выполняющиеся на локальном или удаленном компьютере.
При вызове без параметров командлет Get-Process получает все процессы, выполняющиеся на локальном компьютере. Можно также задать конкретный процесс, указав его имя или идентификатор (PID) или передав объект процесса по конвейеру командлету Get-Process.
По умолчанию командлет Get-Process возвращает объект процесса, который содержит подробные сведения о процессе и поддерживает методы, позволяющие запускать и останавливать процесс. Параметры командлета Get-Process можно использовать для получения информации о версии программы, выполняющейся в конкретном процессе, а также для получения модулей, загруженных процессом.
Используйте команду taskkill, чтобы остановить процесс
Чтобы убить или остановить запущенный процесс из командной строки или PowerShell, вы можете использовать команду . Давайте предположим, что вы хотите остановить OneDrive. Его процесс называется OneDrive.exe. Чтобы убить его, вы должны запустить команду . Параметр указывает Windows принудительно завершить процесс, а параметр используется для идентификации и остановки процесса путем ввода его имени.
Есть моменты, когда вам нужно открыть программу дважды или даже несколько раз. Каждое новое окно, а иногда и вкладки определенной программы (например, Firefox) создают отдельный процесс, называемый экземпляром, с прикрепленным к нему уникальным PID (идентификатор процесса).
Чтобы остановить один экземпляр процесса, вам нужно указать его PID (идентификатор процесса) . Давайте предположим, что на вашем компьютере открыто несколько экземпляров Firefox. Имя процесса — firefox.exe, но вы хотите закрыть только один из запущенных экземпляров (вкладки, окна).
Если вы хотите завершить процесс с PID 2492, вам нужно набрать и нажать Enter.
Другой параметр, который вы можете использовать для команды taskkill — это . Этот параметр позволяет завершить указанный процесс и любые дочерние процессы, которые были запущены им. Возьмите тот же пример: процесс Firefox. Давайте предположим, что у вас есть восемь процессов, и вы хотите убить их всех с помощью параметра . Вы должны ввести команду «» и затем нажать Enter. Посмотрите на скриншот ниже, чтобы увидеть подтверждение введенной вами команды.
Обратите внимание, что если вы неправильно используете команды, перечисленные в этой статье, вы рискуете потерять данные, открытые в запущенных процессах
Важно быть осторожным и иметь резервную копию ваших данных
Поэтому действуйте осторожно и не говорите, что мы вас не предупреждали. Поэтому действуйте осторожно и не говорите, что мы вас не предупреждали
Поэтому действуйте осторожно и не говорите, что мы вас не предупреждали. ПРИМЕЧАНИЕ
Чтобы уничтожить любой запущенный процесс, вам нужно запустить командную строку или PowerShell от имени администратора. Если вы не знаете, как, прочитайте: 9 способов запуска программ с правами администратора в Windows
ПРИМЕЧАНИЕ. Чтобы уничтожить любой запущенный процесс, вам нужно запустить командную строку или PowerShell от имени администратора. Если вы не знаете, как, прочитайте: 9 способов запуска программ с правами администратора в Windows .
Вам нравится использовать командную строку для проверки системной информации и управления запущенными процессами?
Вы знаете, как отобразить системную информацию вашего ПК и как остановить процессы, используя несколько текстовых команд в командной строке или PowerShell. Вы не чувствуете себя сейчас отвратительно? Если вы это сделаете, прокомментируйте ниже и расскажите, насколько вам нравится использование CMD или PowerShell.
Сравнение командлетов с аналогичными командами
Командлеты — это классы с большой функциональностью. Чтобы их назвать, необходимо понимание принципов «Действие-Объект». Чтобы было понятнее, приведена в пример фразу «Get-Help», что в переводе на русский язык означает «Получить-Помощь».
Обычно командлеты прописываются, чтобы обозначить то или иное действие. Выделяют несколько распространённых командлетов PowerShell:
- Get-Process открывает запущенные в операционке процессы;
- Get-Service открывает каталог служб и отображает их действующий статус;
- Get-Content выводит содержимое того или иного файла на экран.
К сведению! В Windows Power Shell присутствуют так называемые алиасы. Это короткие синонимы, предназначенные для командлентов, которые часто применяются пользователем ПК.
Алиасы в Windows Power Shell
Пример 9
C:\PS>get-process powershell C:\PS> get-process -id $pid C:\PS> get-process powershell Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 308 26 52308 61780 567 3.18 5632 powershell 377 26 62676 63384 575 3.88 5888 powershell C:\PS> get-process -id $pid Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 396 26 56488 57236 575 3.90 5888 powershell Описание ----------- На примере следующих команд показано, как с помощью автоматической переменной $pid определить хост-процесс текущего сеанса Windows PowerShell. Этот метод позволяет отличить хост-процесс от других процессов PowerShell, которые может потребоваться остановить или завершить. Первая команда получает все процессы PowerShell, выполняющиеся в текущем сеансе. Первая команда получает хост-процесс текущего сеанса PowerShell.