Выполните команды командлетов PowerShell вручную по категориям

{title}

При работе с операционными системами Windows 10 или Windows Server 2016 у нас есть мощный инструмент управления и контроля для нескольких системных параметров, и это Windows PowerShell.

Windows PowerShell была обновлена ​​в Windows 10 и Server 2016, чтобы обеспечить лучший контроль над каждым системным процессом, а основным компонентом PowerShell являются командлеты.

Командлеты являются основой Windows PowerShell, которая, в свою очередь, является новейшей оболочкой или языком сценариев команд Microsoft, поэтому командлет - это облегченная команда, которая используется в среде Windows PowerShell.

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

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

1. Команды командлетов в PowerShell даты и времени


В эту группу входят такие задачи, как получение текущей даты и времени и выполнение арифметики даты.

Изменить дату и время устройства

Для выполнения этой задачи мы можем использовать командлет Set-Date, но мы должны помнить, что это тонкий командлет, который следует использовать с осторожностью. Например, если мы находимся в среде Active Directory, время нашей команды должно быть полностью синхронизировано со временем контроллера домена; в противном случае, возможно, не удастся войти в домен.

Время команды часто назначается с использованием автоматической службы времени; В этом случае, вероятно, нет необходимости устанавливать дату и время вручную, но если по какой-то причине нам нужно установить дату и время вручную, Set-Date предоставляет простой способ сделать это.

Один из способов изменить дату и / или время на устройстве - использовать параметр -date, за которым следует новая дата и время. Например, чтобы установить дату и время в 10:30 утра 6 ноября 2017 года, мы выполним следующую строку:

 Установить дату-дату "6/11/2017 10:30 утра" 

{title}

Новое время и дата автоматически устанавливаются в системе. Если необходимо настроить часы за два дня, эта команда использует командлет Get-Date и метод AddDays, чтобы перевести часы на два дня:

 Set-Date (Get-Date) .AddDays (2) 
Это увеличит два дня до текущей даты, принимая фактическое системное время:

{title}

Другие методы, которые мы можем использовать, включают AddHours, AddMinutes и AddSeconds, эти опции позволяют нам настраивать часы, минуты или секунды в зависимости от погодных условий или какого-либо административного управления.

Например, в странах, где время зависит от лета, мы можем настроить часы минус один час, используя следующую строку:

 Set-Date (Get-Date) .AddHours (-1) 
В качестве альтернативы можно использовать параметр -adjust для настройки времени в формате часы: минуты: секунды. Например, эта команда устанавливает время на 2 часа 40 минут:
 Дата установки - 2: 40: 0 

Список даты и времени информации

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

Если мы хотим визуализировать текущую дату и время, мы просто будем использовать командлет Get-Date без каких-либо дополнительных параметров:

 Get-Date 

{title}

Там у нас есть текущий день, дата и время. Если мы хотим отображать только дату, мы будем использовать параметр -displayhint, который определяет только дату:

 Get-Date -Displayhint дата 

{title}

Если мы хотим отображать только время, мы будем использовать следующую строку:

 Get-Date -displayhint время 
Также можно использовать Get-Date для создания объекта даты и времени для любой даты или времени. Например, с помощью этой команды мы создадим переменную с именем $ A, которая будет отображена в 12:00 1 декабря 2017 года:
 $ A = Get-Date 12/1/2017 

$config[ads_text5] not found

{title}

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

 $ A = Get-Date «1.12.2017 11:00 AM» 
Командлет Get-Date также включает ряд методов для простой арифметики на сегодняшний день:
 AddSeconds AddMinutes AddHours AddDays AddMonths AddYears 

Выполнить арифметику даты

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

 New-TimeSpan $ (Get-Date) $ (Get-Date -month 10 -day 31 -year 2018) 
В этом случае мы увидим количество дней между сегодняшней датой и 31 октября 2018 года:

$config[ads_text5] not found

{title}

Мы можем видеть полную информацию о днях, минутах, часах и так далее. Для использования New-TimeSpan необходимо будет использовать только пару значений даты и времени. Лучший способ сделать это - использовать метод Get-Date; Это помогает нам получить пару объектов даты и времени, с которыми New-TimeSpan может работать.

В этом примере первая дата была создана с помощью командлета Get-Date без каких-либо дополнительных параметров (обратите внимание, что командлет должен быть в скобках).

Get-Date также вызывался для второй даты, но были добавлены параметры -month, -day и -year вместе с соответствующими значениями.

2. Командные команды в Security PowerShell и дескрипторы безопасности


Эти задачи включают в себя такие действия, как установка политики выполнения сценариев Windows PowerShell и получение цифровой подписи или дескриптора безопасности файла или папки.

$config[ads_text6] not found

Настройте политику конфигурации Windows PowerShell

Командлет Set-ExecutionPolicy позволяет определить, какие сценарии Windows PowerShell можно выполнять на компьютере. Windows PowerShell имеет четыре разные политики выполнения:

  • Ограничено: Вы не можете выполнять сценарии. Windows PowerShell можно использовать только в интерактивном режиме.
  • AllSigned: Вы можете выполнять только сценарии, подписанные доверенным редактором.
  • RemoteSigned: загруженные сценарии должны быть подписаны доверенным редактором, прежде чем они могут быть выполнены.
Неограниченно: все сценарии Windows PowerShell могут быть запущены.

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

 Set-ExecutionPolicy (политика) Set-ExecutionPolicy Неограниченный 
Необходимо будет подтвердить это действие:

{title}

Список политик выполнения скриптов

Командлет Get-ExecutionPolicy отвечает за указание того, какая из четырех политик выполнения действует в настоящее время. Для этого мы выполняем следующее:

 Get-ExecutionPolicy 

{title}

3. Командлеты команд в файлах и папках PowerShell


Эти задачи включают в себя такие действия, как создание, переименование, копирование и удаление файлов и папок.

Копировать файлы и папки

Командлет Copy-Item дает нам возможность скопировать элемент в виде файлов или папки в другое место. Например, мы можем выполнить следующую команду, которая копирует файл Tests.txt из папки D: \ Solvetic в папку C: \ Solvetic:

 Copy-Item d: \ Solvetic \ tests.txt c: \ Solvetic 

{title}

Если мы хотим скопировать все содержимое папки, включая подпапки, мы должны просто использовать подстановочный знак, например:

 Copy-Item d: \ Solvetic \ * c: \ Solvetic 

{title}

$config[ads_text6] not found

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

 Copy-Item d: \ Solvetic \ *. Jpg c: \ Solvetic 

Создать новую папку или файл

Командлет New-Item - это быстрый и простой способ создания нового файла или папки в Windows.

В этом случае мы создадим новый каталог Windows PowerShell в папке C: \ Solvetic. Для этого мы выполним New-Item рядом с полным путем к новой папке и новым типом элемента (который можно указать с помощью параметра -type и каталога значений). Команда будет иметь следующую структуру:

 Каталог нового элемента c: \ Solvetic \ WindowsPowerShell -type 

{title}

$config[ads_text5] not found

Это создаст этот элемент в указанном маршруте. Чтобы создать новый файл, мы должны следовать тому же процессу, указав полное имя пути, но на этот раз настраивая тип файла. С помощью этой команды мы создадим файл C: \ Solvetic \ Solvetic1.txt:

 Файл нового элемента C: \ Solvetic \ Solvetic1.txt 

{title}

Если файл существует и мы хотим перезаписать его, мы можем добавить параметр -force следующим образом:

 Новый элемент C: \ Solvetic \ Solvetic1.txt - файл типа -force 

Удалить файл или папку

Командлет Remove-Item отвечает за удаление файлов и папок в системе.
Если мы хотим удалить файл, мы будем использовать следующую строку:

 Remove-Item c: \ Solvetic \ Solvetic1.txt 

$config[ads_text6] not found

{title}

Мы также можем использовать символы подстановки для удаления нескольких элементов. Например, эта команда удаляет все файлы в пути C: \ Solvetic:

 Удалить предмет c: \ Solvetic \ * 
Другой доступный вариант - указать, какие элементы должны быть удалены, а какие нет, для этого мы можем использовать следующий синтаксис:
 Remove-Item c: \ scripts \ * -include * .txt -exclude * Tests * 
В этом случае будут удалены все файлы .txt, кроме файла с именем «Тесты». Командлет Remove-Item имеет параметр с именем -whatif, который на самом деле ничего не устраняет, а просто отображает, что произойдет, если мы выполним Remove-Item:
 Remove-Item c: \ Solvetic \ *. Txt -whatif 

$config[ads_text5] not found

{title}

Переместить файл или папку

Благодаря командлету Move-Item можно перемещать файл или папку из одного места в другое. Например, мы переместим папку с диска C на диск D:

 Move-Item c: \ Solvetic \ Solvetic d: \ Solvetic 

{title}

Если элемент существует в пути назначения, мы можем использовать параметр -force для его выполнения:

 Move-Item c: \ Solvetic \ Solvetic d: \ Solvetic -force 

Переименовать файл или папку

Командлет Rename-Item позволяет нам переименовывать файлы или папки, для использования нам нужны два значения:

  • Текущий путь к файлу или папке.
  • Новое имя для файла или папки.
В этом случае мы изменим имя папки Solvetic на диске C на Solvetic2:
 Переименовать-Элемент c: \ Solvetic \ Solvetic Solvetic2 

{title}

Проверьте наличие файла или папки

Одним из основных применений командлета Test-Path является проверка существования файла или папки. Например, эта команда проверяет, существует ли файл C: \ Solvetic \ Solvetic.txt:

 Тест-путь c: \ Solvetic \ Solvetic.txt 

{title}

Если мы получим результат true, файл существует, в противном случае мы увидим false. Можно даже проверить наличие ключей в редакторе реестра Windows.

 HKCU Test-Path: \ Software \ Microsoft \ Windows \ CurrentVersion 

$config[ads_text6] not found

{title}

4. Командлеты команд в PowerShell задач системного администрирования


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

Список сервисной информации

Командлет Get-Service предназначен для получения информации об услугах, установленных в системе.

Просто используйте Get-Service без каких-либо дополнительных параметров:

 Get-Service 
Результат будет следующим. Там мы видим каждый сервис с его названием и текущим статусом.

{title}

$config[ads_text5] not found

Мы можем применить фильтры для визуализации сервисов с определенным состоянием, например, чтобы увидеть все сервисы в состоянии Stopped, мы выполним следующее:

 Get-Service | Where-Object {$ _. Status -eq "остановлен"} 

{title}

примечание

$ _. представляет объект, прошедший через трубу.

Таким же образом, чтобы увидеть все активные сервисы, мы выполняем:

 Get-Service | Where-Object {$ _. Status -eq "выполняется"} 
По умолчанию Windows PowerShell возвращает сервисы, упорядоченные в алфавитном порядке. Однако с помощью командлета Sort-Object можно отсортировать возвращаемые данные так, как вы хотите. Например, эта команда упорядочивает службы сначала по State, а затем по DisplayName:
 Get-Service | Состояние сортировки объекта, отображаемое имя 

{title}

$config[ads_text5] not found

Управление журналами событий

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

Командлет Get-EventLog имеет две цели: он позволяет нам управлять журналами событий, а также позволяет получать доступ к событиям, содержащимся в этих журналах событий.

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

 Get-EventLog -list 

{title}

Если нам нужна только информация о конкретном журнале событий, мы можем использовать командлет Where-Object, чтобы ограничить восстановление данных журналом, LogDisplayName которого равен, в данном случае System:

 Get-EventLog -list | Where-Object {$ _. Logdisplayname -eq "Система"} 
Чтобы перечислить все события определенной категории, мы можем выполнить следующую строку:
 Система Get-EventLog 

{title}

Мы также можем использовать параметр -newest и получить только последнее количество событий, записанных в журнале, как указано:

 Система Get-EventLog -newest 5 

{title}

$config[ads_text5] not found

Чтобы получить гораздо больше информации о событии, мы выполним следующую строку:

 Система Get-EventLog -newest 5 | Format-List 

{title}

Также возможно передавать данные через командлет Where-Object, чтобы возвращать подмножество событий. Например, эта команда извлекает только те события из журнала событий Windows PowerShell, у которых EventID равен 403:

 Get-EventLog "Windows PowerShell" | Where-Object {$ _. EventID -eq 403} 

{title}

Следующий параметр позволяет получить все события в журнале событий Windows PowerShell, а затем использовать командлет Group-Object для группировки этих событий по EventID.

 Get-EventLog "Windows PowerShell" | Вечерняя группа-объект | Имя объекта сортировки 
Там мы можем увидеть количество раз, когда произошло событие, название и описание.

$config[ads_text6] not found

{title}

Изменить свойства сервиса

Командлет Set-Service дает возможность изменить описание, тип запуска или отображаемое имя службы. Все, что нам нужно сделать, это вызвать Set-Service, за которым следует имя службы, которую мы хотим изменить, и соответствующий параметр (-description, -startup, -displayname)

 Set-Service XblAuthManager -startuptype "manual" 

{title}

Приостановить или перезапустить службу

Командлет Suspend-Service используется для приостановки службы, которая в данный момент работает.

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

 Суспенд-Сервис таписрв 

{title}

В этом случае мы приостановили услугу «Телефон», используя имя вашей службы, но при желании мы можем использовать имя службы:

 Суспенд-Сервис -дисплей "Телефония" 
Чтобы перезапустить службу в Windows, мы должны использовать командлет Resume-Service, а затем приостановленную службу:
 Резюме-Сервис таписрв 

$config[ads_text5] not found

Восстановление данных с помощью WMI

Поскольку существует всего несколько командлетов (Get-Process, Get-Service и Get-EventLog), предназначенных для выполнения задач системного администрирования, WMI остается основной технологией автоматизации системного администрирования, поэтому Системные администраторы, вероятно, будут сильно полагаться на Get-WmiObject для задач администрирования.

Get-WmiObject можно запустить на удаленных компьютерах, что означает, что Windows PowerShell действительно можно использовать в качестве инструмента администрирования.

Для получения информации о BIOS мы можем выполнить следующую строку:

 Get-WmiObject win32_bios 

{title}

$config[ads_text5] not found

Чтобы убедиться, что мы получаем информацию обо всех свойствах (и их значениях), лучше всего направить данные, возвращаемые Get-WmiObject, в Select-Object, а затем использовать подстановочный знак *, чтобы указать, что мы хотим получить все значения свойств,

Если необходимо получить свойства и методы для конкретного класса WMI, мы можем использовать Get-WmiObject, чтобы подключиться к рассматриваемому классу, а затем направить эту информацию через командлет Get-Member:

 Get-WmiObject win32_bios | получить членов 

{title}

Остановись и запусти сервис

Чтобы остановить службу в Windows, мы должны использовать командлет Stop-Service:

 Стоп-Сервис между прочим 
Для запуска службы мы будем использовать командлет Start-Service:
 Старт-Сервис между прочим 

$config[ads_text6] not found

Завершить процесс в Windows с помощью PowerShell

Командлет Stop-Process позволяет нам завершить процесс (или процессы). Мы можем указать процессы, которые вы хотите удалить, указав идентификатор процесса или указав имя процесса. У нас есть возможность завершить процесс следующим образом:

  • С вашим ID:
 Стоп-Процесс 3512 
  • По имени:
 Stop-Process -processname блокнот 

{title}

Stop-Process также принимает символы подстановки. Например, эта команда завершит любой экземпляр Блокнота, а также любой другой процесс, имена которого начинаются с примечания:

 Stop-Process -processname note * 

5. Командлеты команд в PowerShell для задач справки и информации


Эти задачи включают в себя такие аспекты, как перечисление информации в версии Windows PowerShell и использование командлета Get-Member для получения информации о свойствах и методах для объекта.

Получить помощь

Windows PowerShell включает два основных типа справки, справку по команде и концептуальную справку, доступ к которой можно получить из консоли с помощью командлета Get-Help. Чтобы получить список всех доступных разделов справки, нам просто нужно ввести следующую команду:

 Get-Help * 

$config[ads_text5] not found

{title}

Как только у нас будет этот список, вы можете получить помощь по конкретной теме, передав ее название в Get-Help. Например, чтобы получить больше информации о командлете Get-Member. В этом случае мы просто выполним:

 Get-Help Get-Member 

{title}

Перечислите все командлеты Windows PowerShell

Get-Command была разработана для получения справки, если вы не помните имя командлета.

Get-Command необходимо использовать без каких-либо дополнительных параметров, и мы получим список всех командлетов Windows PowerShell:

 Get-Command 

{title}

Мы можем использовать командлет Format-List для извлечения свойств командлетов:

 Get-Command | Формат-Список * 

{title}

Можно использовать Select-Object для фильтрации всех свойств, кроме Name:

 Get-Command | Выбор объекта 

{title}

Эта информация может быть экспортирована в текстовый файл для последующего управления, для этого мы должны выполнить:

 Get-Command | Get-Help | Out-File c: \ Solvetic \ Help.txt 

$config[ads_text6] not found

Перечислите версию командлетов

Командлет Get-Host возвращает информацию (например, номер версии) для Windows PowerShell.

 Get-Host 

{title}

Перечислите свойства и методы команды

Можно использовать командлет Windows PowerShell Get-Member. После подключения к объекту вы можете направить этот объект в Get-Member, и, в свою очередь, Get-Member перечислит свойства и методы этого объекта.

 Get-EventLog -list | Get-Member 

{title}

Параметр -membertype позволяет ограничить данные, возвращаемые свойствами:

 Get-WmiObject win32_bios | Свойства Get-Member -membertype 

$config[ads_text5] not found

{title}

Список установленных поставщиков Windows PowerShell

Поставщики Windows PowerShell определяют хранилища данных, по которым вы можете перемещаться. Например, вы можете использовать команду Get-ChildItem, чтобы получить список всех файлов, найденных в папке.

Чтобы определить поставщиков, доступных вам, просто вызовите командлет Get-PSProvider без каких-либо параметров:

{title}

6. Командлеты команд в PowerShell сессий Windows PowerShell


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

$config[ads_text6] not found

Перечислите местный язык и информацию

Командлет Get-Culture позволяет нам просматривать информацию о языке и региональных настройках.

{title}

Список истории Windows PowerShell

Во время каждого сеанса Windows PowerShell отслеживает все команды, которые мы вводим в окне консоли. Получить список этих команд так же просто, как выполнить командлет Get-History:

{title}

По умолчанию Windows PowerShell отслеживает последние 64 команды, написанные в окне консоли. Для отображения определенного количества мы будем использовать параметр -count:

 Get-History 15 -count 15 

{title}

Вызов предыдущей команды

Командлет Invoke-History позволяет повторно запустить команду Windows PowerShell, просто указав идентификационный номер, назначенный этой команде.

 Invoke-История 3 
Это выполнит команду, расположенную в позиции № 3:

$config[ads_text5] not found

{title}

Командлет Invoke-History принимает только уникальный идентификатор, в случае выполнения большего количества команд мы должны выполнить пару команд Invoke-History, разделяя их двумя точками с запятой:

 Invoke-History 3; Invoke-History 4 

7. Командлеты команд в PowerShell Storage и импорт данных


Эти задачи содержат такие задачи, как чтение и запись в текстовые файлы, а также сохранение данных в формате HTML или XML.

Добавить данные в текстовый файл

Использование командлета Add-Content позволяет добавлять данные в текстовый файл. Например, эта команда добавляет слова «Solvetic» в файл C: \ Solvetic \ Solvetic.txt:

 Add-Content c: \ Solvetic \ Solvetic.txt "Solvetic" 
{title}

$config[ads_text5] not found

По умолчанию надстройка добавляет новое значение сразу после последнего символа в текстовом файле. Если вы предпочитаете, чтобы слово Solvetic появлялось в отдельной строке, просто вставьте `n (жаргон в Windows PowerShell для« новой строки ») в значение, записываемое в файл.

 Add-Content c: \ Solvetic \ Solvetic.txt "` nSolvetic " 

{title}

Вот некоторые другие специальные символы, которые можно использовать в результате Windows PowerShell:

 `0 - Null` a - Предупреждение` b - Возврат` n - Новая строка `r - Возврат строки` t - Горизонтальная табуляция` `- Одинарная кавычка` "- Двойная кавычка 

$config[ads_text6] not found

Показать данные и сохранить их с помощью команды

Командлет Tee-Object позволяет нам визуализировать данные в окне Windows PowerShell и сохранять эти же данные в текстовом файле с помощью одной команды. Например, эта команда использует командлет Get-Process для получения информации обо всех процессах, запущенных в данный момент на компьютере, а затем с помощью Tee-Object одновременно отображает данные на экране и сохраняет их в файле C: \ Solvetic \ Solvetic. .TXT:

 Get-Process | Tee-Object -file c: \ Solvetic \ Solvetic.txt 

{title}

Мы видим, что данные записываются на экран и одновременно в выбранном файле будут сохранены:

{title}

Удалить содержимое файла

Командлет Clear-Content позволяет нам удалять содержимое файла, не удаляя его.

 Clear-Content c: \ Solvetic \ Solvetic.txt 

Сохранить данные как HTML

Командлет ConvertTo-Html позволяет очень легко увидеть результат Windows PowerShell на веб-странице в формате HTML, что упрощает чтение и структуру данных. Мы выполним следующее:

 Get-Process | ConvertTo-Html | Set-Content c: \ Solvetic \ Solvetic.htm 
В этом примере мы сохраним все системные процессы в файле Solvetic.txt и преобразуем его в формат HTML:

{title}

Это создаст файл HTML, который можно открыть в любом браузере:

{title}

Прочитайте текст файла

Благодаря командлету Get-Content можно получить доступ к содержимому файла на компьютере.

 Get-Content c: \ Solvetic \ Solvetic.txt 

{title}

Сохранить данные в формате XML

Для сохранения файла в формате XML можно использовать командлет Export-Clixml.

$config[ads_text5] not found

С помощью этой строки мы получим все системные процессы и сохраним их в виде файла XML. При его выполнении будет создан соответствующий XML-файл:

{title}

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