При работе с операционными системами 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 утра"
Новое время и дата автоматически устанавливаются в системе. Если необходимо настроить часы за два дня, эта команда использует командлет Get-Date и метод AddDays, чтобы перевести часы на два дня:
Set-Date (Get-Date) .AddDays (2)Это увеличит два дня до текущей даты, принимая фактическое системное время:
Другие методы, которые мы можем использовать, включают AddHours, AddMinutes и AddSeconds, эти опции позволяют нам настраивать часы, минуты или секунды в зависимости от погодных условий или какого-либо административного управления.
Например, в странах, где время зависит от лета, мы можем настроить часы минус один час, используя следующую строку:
Set-Date (Get-Date) .AddHours (-1)В качестве альтернативы можно использовать параметр -adjust для настройки времени в формате часы: минуты: секунды. Например, эта команда устанавливает время на 2 часа 40 минут:
Дата установки - 2: 40: 0
Список даты и времени информации
Командлет Get-Date позволяет нам получать текущую дату и время. Аналогично, есть некоторые другие приемы, которые мы можем сделать с Get-Date, чтобы скорректировать эти значения.
Если мы хотим визуализировать текущую дату и время, мы просто будем использовать командлет Get-Date без каких-либо дополнительных параметров:
Get-Date
Там у нас есть текущий день, дата и время. Если мы хотим отображать только дату, мы будем использовать параметр -displayhint, который определяет только дату:
Get-Date -Displayhint дата
Если мы хотим отображать только время, мы будем использовать следующую строку:
Get-Date -displayhint времяТакже можно использовать Get-Date для создания объекта даты и времени для любой даты или времени. Например, с помощью этой команды мы создадим переменную с именем $ A, которая будет отображена в 12:00 1 декабря 2017 года:
$ A = Get-Date 12/1/2017$config[ads_text5] not found
Теперь, если мы хотим добавить определенное время к этой переменной, просто добавьте его следующим образом:
$ 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
Мы можем видеть полную информацию о днях, минутах, часах и так далее. Для использования 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: загруженные сценарии должны быть подписаны доверенным редактором, прежде чем они могут быть выполнены.
Чтобы назначить любую из этих политик, мы будем использовать следующий синтаксис:
Set-ExecutionPolicy (политика) Set-ExecutionPolicy НеограниченныйНеобходимо будет подтвердить это действие:
Список политик выполнения скриптов
Командлет Get-ExecutionPolicy отвечает за указание того, какая из четырех политик выполнения действует в настоящее время. Для этого мы выполняем следующее:
Get-ExecutionPolicy
3. Командлеты команд в файлах и папках PowerShell
Эти задачи включают в себя такие действия, как создание, переименование, копирование и удаление файлов и папок.
Копировать файлы и папки
Командлет Copy-Item дает нам возможность скопировать элемент в виде файлов или папки в другое место. Например, мы можем выполнить следующую команду, которая копирует файл Tests.txt из папки D: \ Solvetic в папку C: \ Solvetic:
Copy-Item d: \ Solvetic \ tests.txt c: \ Solvetic
Если мы хотим скопировать все содержимое папки, включая подпапки, мы должны просто использовать подстановочный знак, например:
Copy-Item d: \ Solvetic \ * c: \ Solvetic$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$config[ads_text5] not found
Это создаст этот элемент в указанном маршруте. Чтобы создать новый файл, мы должны следовать тому же процессу, указав полное имя пути, но на этот раз настраивая тип файла. С помощью этой команды мы создадим файл C: \ Solvetic \ Solvetic1.txt:
Файл нового элемента C: \ Solvetic \ Solvetic1.txt
Если файл существует и мы хотим перезаписать его, мы можем добавить параметр -force следующим образом:
Новый элемент C: \ Solvetic \ Solvetic1.txt - файл типа -force
Удалить файл или папку
Командлет Remove-Item отвечает за удаление файлов и папок в системе.
Если мы хотим удалить файл, мы будем использовать следующую строку:
Remove-Item c: \ Solvetic \ Solvetic1.txt$config[ads_text6] not found
Мы также можем использовать символы подстановки для удаления нескольких элементов. Например, эта команда удаляет все файлы в пути 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
Переместить файл или папку
Благодаря командлету Move-Item можно перемещать файл или папку из одного места в другое. Например, мы переместим папку с диска C на диск D:
Move-Item c: \ Solvetic \ Solvetic d: \ Solvetic
Если элемент существует в пути назначения, мы можем использовать параметр -force для его выполнения:
Move-Item c: \ Solvetic \ Solvetic d: \ Solvetic -force
Переименовать файл или папку
Командлет Rename-Item позволяет нам переименовывать файлы или папки, для использования нам нужны два значения:
- Текущий путь к файлу или папке.
- Новое имя для файла или папки.
Переименовать-Элемент c: \ Solvetic \ Solvetic Solvetic2
Проверьте наличие файла или папки
Одним из основных применений командлета Test-Path является проверка существования файла или папки. Например, эта команда проверяет, существует ли файл C: \ Solvetic \ Solvetic.txt:
Тест-путь c: \ Solvetic \ Solvetic.txt
Если мы получим результат true, файл существует, в противном случае мы увидим false. Можно даже проверить наличие ключей в редакторе реестра Windows.
HKCU Test-Path: \ Software \ Microsoft \ Windows \ CurrentVersion$config[ads_text6] not found
4. Командлеты команд в PowerShell задач системного администрирования
Эти задачи включают в себя такие действия, как запуск и остановка служб, получение данных с помощью WMI и управление журналами событий и событиями журнала событий.
Список сервисной информации
Командлет Get-Service предназначен для получения информации об услугах, установленных в системе.
Просто используйте Get-Service без каких-либо дополнительных параметров:
Get-ServiceРезультат будет следующим. Там мы видим каждый сервис с его названием и текущим статусом.$config[ads_text5] not found
Мы можем применить фильтры для визуализации сервисов с определенным состоянием, например, чтобы увидеть все сервисы в состоянии Stopped, мы выполним следующее:
Get-Service | Where-Object {$ _. Status -eq "остановлен"}
примечание
$ _. представляет объект, прошедший через трубу.
Таким же образом, чтобы увидеть все активные сервисы, мы выполняем:
Get-Service | Where-Object {$ _. Status -eq "выполняется"}По умолчанию Windows PowerShell возвращает сервисы, упорядоченные в алфавитном порядке. Однако с помощью командлета Sort-Object можно отсортировать возвращаемые данные так, как вы хотите. Например, эта команда упорядочивает службы сначала по State, а затем по DisplayName:
Get-Service | Состояние сортировки объекта, отображаемое имя$config[ads_text5] not found
Управление журналами событий
События в Windows - один из лучших способов, которыми мы, как администраторы, можем управлять системными событиями.
Командлет Get-EventLog имеет две цели: он позволяет нам управлять журналами событий, а также позволяет получать доступ к событиям, содержащимся в этих журналах событий.
Чтобы получить список событий, мы выполним следующее. Там мы можем увидеть различные категории с их количеством событий.
Get-EventLog -list
Если нам нужна только информация о конкретном журнале событий, мы можем использовать командлет Where-Object, чтобы ограничить восстановление данных журналом, LogDisplayName которого равен, в данном случае System:
Get-EventLog -list | Where-Object {$ _. Logdisplayname -eq "Система"}Чтобы перечислить все события определенной категории, мы можем выполнить следующую строку:
Система Get-EventLog
Мы также можем использовать параметр -newest и получить только последнее количество событий, записанных в журнале, как указано:
Система Get-EventLog -newest 5$config[ads_text5] not found
Чтобы получить гораздо больше информации о событии, мы выполним следующую строку:
Система Get-EventLog -newest 5 | Format-List
Также возможно передавать данные через командлет Where-Object, чтобы возвращать подмножество событий. Например, эта команда извлекает только те события из журнала событий Windows PowerShell, у которых EventID равен 403:
Get-EventLog "Windows PowerShell" | Where-Object {$ _. EventID -eq 403}
Следующий параметр позволяет получить все события в журнале событий Windows PowerShell, а затем использовать командлет Group-Object для группировки этих событий по EventID.
Get-EventLog "Windows PowerShell" | Вечерняя группа-объект | Имя объекта сортировкиТам мы можем увидеть количество раз, когда произошло событие, название и описание.$config[ads_text6] not found
Изменить свойства сервиса
Командлет Set-Service дает возможность изменить описание, тип запуска или отображаемое имя службы. Все, что нам нужно сделать, это вызвать Set-Service, за которым следует имя службы, которую мы хотим изменить, и соответствующий параметр (-description, -startup, -displayname)
Set-Service XblAuthManager -startuptype "manual"
Приостановить или перезапустить службу
Командлет Suspend-Service используется для приостановки службы, которая в данный момент работает.
Остановленная служба оставляет все существующие подключения и отказывается устанавливать новые подключения. Приостановленная служба обычно продолжает обслуживать существующие подключения, но не принимает новые подключения.
Для этого просто выполните следующее:
Суспенд-Сервис таписрв
В этом случае мы приостановили услугу «Телефон», используя имя вашей службы, но при желании мы можем использовать имя службы:
Суспенд-Сервис -дисплей "Телефония"Чтобы перезапустить службу в 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$config[ads_text5] not found
Чтобы убедиться, что мы получаем информацию обо всех свойствах (и их значениях), лучше всего направить данные, возвращаемые Get-WmiObject, в Select-Object, а затем использовать подстановочный знак *, чтобы указать, что мы хотим получить все значения свойств,
Если необходимо получить свойства и методы для конкретного класса WMI, мы можем использовать Get-WmiObject, чтобы подключиться к рассматриваемому классу, а затем направить эту информацию через командлет Get-Member:
Get-WmiObject win32_bios | получить членов
Остановись и запусти сервис
Чтобы остановить службу в Windows, мы должны использовать командлет Stop-Service:
Стоп-Сервис между прочимДля запуска службы мы будем использовать командлет Start-Service:
Старт-Сервис между прочим$config[ads_text6] not found
Завершить процесс в Windows с помощью PowerShell
Командлет Stop-Process позволяет нам завершить процесс (или процессы). Мы можем указать процессы, которые вы хотите удалить, указав идентификатор процесса или указав имя процесса. У нас есть возможность завершить процесс следующим образом:
- С вашим ID:
Стоп-Процесс 3512
- По имени:
Stop-Process -processname блокнот
Stop-Process также принимает символы подстановки. Например, эта команда завершит любой экземпляр Блокнота, а также любой другой процесс, имена которого начинаются с примечания:
Stop-Process -processname note *
5. Командлеты команд в PowerShell для задач справки и информации
Эти задачи включают в себя такие аспекты, как перечисление информации в версии Windows PowerShell и использование командлета Get-Member для получения информации о свойствах и методах для объекта.
Получить помощь
Windows PowerShell включает два основных типа справки, справку по команде и концептуальную справку, доступ к которой можно получить из консоли с помощью командлета Get-Help. Чтобы получить список всех доступных разделов справки, нам просто нужно ввести следующую команду:
Get-Help *$config[ads_text5] not found
Как только у нас будет этот список, вы можете получить помощь по конкретной теме, передав ее название в Get-Help. Например, чтобы получить больше информации о командлете Get-Member. В этом случае мы просто выполним:
Get-Help Get-Member
Перечислите все командлеты Windows PowerShell
Get-Command была разработана для получения справки, если вы не помните имя командлета.
Get-Command необходимо использовать без каких-либо дополнительных параметров, и мы получим список всех командлетов Windows PowerShell:
Get-Command
Мы можем использовать командлет Format-List для извлечения свойств командлетов:
Get-Command | Формат-Список *
Можно использовать Select-Object для фильтрации всех свойств, кроме Name:
Get-Command | Выбор объекта
Эта информация может быть экспортирована в текстовый файл для последующего управления, для этого мы должны выполнить:
Get-Command | Get-Help | Out-File c: \ Solvetic \ Help.txt$config[ads_text6] not found
Перечислите версию командлетов
Командлет Get-Host возвращает информацию (например, номер версии) для Windows PowerShell.
Get-Host
Перечислите свойства и методы команды
Можно использовать командлет Windows PowerShell Get-Member. После подключения к объекту вы можете направить этот объект в Get-Member, и, в свою очередь, Get-Member перечислит свойства и методы этого объекта.
Get-EventLog -list | Get-Member
Параметр -membertype позволяет ограничить данные, возвращаемые свойствами:
Get-WmiObject win32_bios | Свойства Get-Member -membertype$config[ads_text5] not found
Список установленных поставщиков Windows PowerShell
Поставщики Windows PowerShell определяют хранилища данных, по которым вы можете перемещаться. Например, вы можете использовать команду Get-ChildItem, чтобы получить список всех файлов, найденных в папке.
Чтобы определить поставщиков, доступных вам, просто вызовите командлет Get-PSProvider без каких-либо параметров:
6. Командлеты команд в PowerShell сессий Windows PowerShell
Эти задачи включают в себя такие задачи, как получение журнала Windows PowerShell и вызов команды, содержащейся в этой истории.$config[ads_text6] not found
Перечислите местный язык и информацию
Командлет Get-Culture позволяет нам просматривать информацию о языке и региональных настройках.
Список истории Windows PowerShell
Во время каждого сеанса Windows PowerShell отслеживает все команды, которые мы вводим в окне консоли. Получить список этих команд так же просто, как выполнить командлет Get-History:
По умолчанию Windows PowerShell отслеживает последние 64 команды, написанные в окне консоли. Для отображения определенного количества мы будем использовать параметр -count:
Get-History 15 -count 15
Вызов предыдущей команды
Командлет Invoke-History позволяет повторно запустить команду Windows PowerShell, просто указав идентификационный номер, назначенный этой команде.
Invoke-История 3Это выполнит команду, расположенную в позиции № 3:$config[ads_text5] not found
Командлет 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"$config[ads_text5] not found
По умолчанию надстройка добавляет новое значение сразу после последнего символа в текстовом файле. Если вы предпочитаете, чтобы слово Solvetic появлялось в отдельной строке, просто вставьте `n (жаргон в Windows PowerShell для« новой строки ») в значение, записываемое в файл.
Add-Content c: \ Solvetic \ Solvetic.txt "` nSolvetic "
Вот некоторые другие специальные символы, которые можно использовать в результате 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
Мы видим, что данные записываются на экран и одновременно в выбранном файле будут сохранены:
Удалить содержимое файла
Командлет 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:
Это создаст файл HTML, который можно открыть в любом браузере:
Прочитайте текст файла
Благодаря командлету Get-Content можно получить доступ к содержимому файла на компьютере.
Get-Content c: \ Solvetic \ Solvetic.txt
Сохранить данные в формате XML
Для сохранения файла в формате XML можно использовать командлет Export-Clixml.
$config[ads_text5] not foundС помощью этой строки мы получим все системные процессы и сохраним их в виде файла XML. При его выполнении будет создан соответствующий XML-файл:
Мы видели, как были разработаны командлеты Windows PowerShell, чтобы предложить нам возможность гораздо более прямого и полного управления всеми компонентами и службами операционной системы.
СТАТЬИ