WindowsПрограммирование

Командлеты Powershell, которые улучшат ваши навыки администратора Windows

Командлеты Powershell, улучшающие ваши навыки администратора Windows

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

Работа с Powershell

Есть два способа использования Powershell. Существует основное окно командной строки, которое используется для запуска команд или вызова предварительно написанных сценариев. Тогда есть ISE, который комбинирует окно CLI с базовой средой разработки. Используя это, вы можете писать и тестировать свои скрипты.

ISE имеет список команд с возможностью поиска, и вы можете использовать его окно терминала без открытия файла. Список команд позволяет вам составить вашу команду и вставить ее. Если вы занимаетесь более продвинутой разработкой, установите Microsoft Visual Studio Code. В коде включена поддержка управления версиями Git. и другие языки.

командная строка powershell

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

Основы: Get-Command, Get-Help, Get-Member

Все команды Powershell принимают форму глагола-существительного. Глаголы обычно бывают: Get, Set и New .

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

Копаясь дальше только от имен командлетов, вы начинаете видеть, что все они имеют схожую структуру. Вы вызываете их по имени, как вы это делали с Get-Command. Использование параметров изменяет информацию, которую вы получаете. Однако, если вы когда-либо использовали команду только с параметрами по умолчанию, как вы узнаете, как использовать расширенные параметры?

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

Использование командлета Get-Help с Get-Command показывает дополнительную информацию о командлете. Мы используем командлет со следующим синтаксисом:

Get-Help Get-Command 

Затем вы увидите основную информацию о параметрах. Если вы хотите увидеть подробности параметра и некоторые примеры использования, добавьте параметр -Full.

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

 Get-Help Get-Command -Examples 

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

окно справки

Если вы хотите вывести файл справки в отдельное окно, вы можете использовать -ShowWindow . Итак, если вы запустите:

 Get-Help Get-Command -ShowWindow 

Powershell выскакивает окно с полным файлом справки. Вам не нужно использовать параметр Full здесь, так как окно выводит всю статью.

По мере того, как вы будете совершенствоваться с Powershell, вы обнаружите, что чаще используете Get-Member. Это простой способ увидеть, какие поля доступны из возвращенных данных, а также другие методы, которые вы можете запустить. Часто командлеты имеют параметр -Property, чтобы вы могли их вызывать.

Работа с файлами: Get-ChildItem, Remove-Item, Move-Item, Copy-Item

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

 Get-ChildItem E:\ 

Что сокращенно от:

 Get-ChildItem -Path E:\ 

Когда вы запускаете эту команду, вы получаете список файлов с последним временем записи, размером в свойстве Length, Name и Mode. Режим — это атрибуты файла или папки. Возможные записи:

  • ReadOnly
  • скрытый
  • система
  • каталог
  • Архив
  • устройство
  • Обычный
  • временный
  • разрежённый файл
  • ReparsePoint
  • Сжатый
  • Не в сети
  • NotContentIndexed
  • Зашифрованные

Если вы хотите получить содержимое всех подкаталогов в пути, вы должны использовать параметр -Recurse . Итак, запустите:

 Get-ChildItem -Path E:\ -Recurse 

Ваши файлы затем выходят в виде отдельных списков для каждой папки в пути.

powershell get-childitem

Чтобы ограничить возвращаемые данные, вы можете использовать несколько различных параметров: -File , -Hidden и -ReadOnly . Если вы хотите отфильтровать имена файлов, вы можете использовать подстановочные знаки в параметре Path. Чтобы вернуть все файлы .doc в каталог, введите:

 Get-ChildItem -Path E:\*.doc 

Снова добавьте -recurse, если вы тоже хотите все из подпапок.

Если вы хотите удалить файл, используйте:

 Remove-Item -Path E:\OldFile.txt 

Чтобы пропустить подтверждение каждого файла, добавьте параметр -Confirm $ false (Powershell имеет две константы для логических значений: $ true и $ false). Чтобы принудительно удалить доступные только для чтения или скрытые файлы, используйте параметр -Force .

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

 Move-Item -Path E:\* -Destination C:\FlashDriveArchive 

Вы также можете назвать один файл в -Path, чтобы переместить только этот файл. Чтобы скопировать файл, а не переместить его, используйте тот же синтаксис с командлетом Copy-Item .

Мониторинг и работа с процессами и сервисами

Каждый пользователь Windows знает диспетчер задач Тем не менее, есть более быстрый способ увидеть текущие запущенные процессы из Powershell, Get-Process . Если вы хотите узнать, что означают все записи в этой таблице, передайте команду Get-Member . Введите командлет:

 Get-Process | Get-Member 

Get-member выводит список методов и свойств, связанных с Get-Process. Информация наверху — это то, что вас интересует. Вы видите, что различные типы памяти имеют псевдонимы.

PowerShell Get-процесс

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

 Get-Process | Select-Object Product, NPM, CPU, Name, ID | Sort-Object CPU -Descending 

(Подробнее о Select-Object и Sort-Object в следующем разделе.)

Теперь, когда у вас есть идентификатор из команды Get-Process, вы можете остановить его с помощью командлета Stop-Process. Поэтому, если вы обнаружите, что процесс Chrome поглощает все ваши ресурсы, найдите идентификатор в предыдущей команде. Затем запустите:

 Stop-Process -ID 45960 

Замените 49560 идентификатором вашего борова.

Используя путь к файлу, вы можете запустить процесс с помощью Powershell. Чтобы запустить Chrome, выполните следующую команду:

 Start-Process -Filepath "C:\Program Files (x86) GoogleChromeApplicationchrome.exe" 

(Вы должны иметь кавычки вокруг пути к файлу из-за пробелов.) Параметр -ArgumentList позволяет передавать параметры командной строки в приложение. В случае Chrome вы можете принудительно запустить его в режиме инкогнито, используя флаг –incognito . Весь командлет:

 Start-Process -Filepath "C:\Program Files (x86) GoogleChromeApplicationchrome.exe" -ArgumentList "--incognito" 

PowerShell Get-Service

Вы можете делать большинство таких же вещей с помощью сервисов. . Get-Service показывает вам список всех служб, работающих на вашем компьютере. Как и в случае запуска и остановки служб, вы можете использовать Start-Service и Stop-Service .

Работа с данными: Sort-Object, Select-Object, Where-Object

Когда вы работаете с данными из командлета, это может не всегда соответствовать желаемому порядку. В этих случаях вы хотите использовать Sort-Object . Вы можете вызвать Sort-Object для созданной вами переменной, но в основном она используется для передачи другого командлета. Как и в примере выше, мы передаем вывод одного объекта другому и сортируем его. Давайте создадим массив из трех случайных чисел и передадим его в Sort-Object.

Все в скобках запускается первым. Создайте простой массив с:

 $(Get-Random), $(Get-Random), $(Get-Random) 

Обязательно обратите внимание на запятые, разделяющие значения. Итак, чтобы увидеть случайные числа отсортированы запустить:

 $(Get-Random), $(Get-Random), $(Get-Random) | Sort-Object 

Командлет выводит числа от наименьшего к наибольшему, если вы хотите изменить его, добавьте -По убыванию .

объект PowerShell для сортировки

При передаче командлетов в Get-Member свойств больше, чем вывод по умолчанию. Вы выбираете определенные свойства, используя Select-Object .

Как и Sort-Object, вы используете Select-Object с помощью командного командлета. Например, для генерации таблицы сервисов и использования их статуса:

 Get-Service | Select-Object DisplayName, Status 

Хотя вывод всех этих данных приятен, что, если вы хотите видеть только определенные данные? Get-ChildItem имеет некоторую встроенную фильтрацию, но большинство команд не имеют. В этих случаях вы используете Where-Object .

где PowerShell-объект

Возвращаясь к сервисам снова, на этот раз вы получите только запущенные сервисы. Введите командлет:

 Get-Service | Where-Object Status -eq "Running" 

Это -eq в сравнении является Powershell для = . В Powershell вы выполняете сравнения с буквенными комбинациями:

  • экв: равно
  • ne: не равно
  • lt: меньше чем
  • GT: больше чем
  • ge: больше или равно
  • le: меньше или равно
  • like: использовать как в сравнительных символах

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

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

формат-список powershell

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

От командной строки до сценариев: следующие шаги

Если вам удобнее, сценарии — это вопрос ввода командлетов. в текстовом файле и сохраняйте его. Если вы нервничаете из-за того, что пытаетесь писать сценарии, не надо. Microsoft имеет огромное количество документации по каждому командлету. Это больше, чем уже длинная справочная документация, поэтому обязательно ознакомьтесь с Technet [Больше не доступно].

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

Похожие посты
Windows

Драйверы для Windows 10

Windows

Лучшие приложения для фотографии на вашем Windows Phone

Windows

Команды командной строки для панели управления апплетами

Windows

Официальное приложение SmugMug теперь доступно для Windows Phone