Powershell windows 10 команды управления компьютером

В данном материале будет представлен и рассмотрен список полезных и часто используемых командлетов Windows PowerShell

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

Справочник командлетов Windows PowerShell

Ранее в материале «Основы Windows PowerShell» мы с Вами узнали, что вообще такое PowerShell, а также рассмотрели основные его возможности. Поэтому данная статья подразумевает, что Вы уже имеете представление о том, что такое Windows PowerShell и сейчас мы не будем заострять на этом внимание, а сразу перейдем к рассмотрению командлетов.

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

  
  Get-Command -CommandType cmdlet

Если Вы, выполнив вышеуказанную команду у себя на компьютере, не нашли командлет из представленного ниже списка (или тот который Вам нужен), то скорей всего у Вас не установлен необходимый модуль. Модули PowerShell для соответствующих ролей и компонентов сервера устанавливаются автоматически одновременно с ними. В случае если Вы хотите воспользоваться данными модулями на системе без установленных ролей и компонентов, то Вы всегда можете установить соответствующие «Средства удаленного администрирования сервера», которые добавляют не только оснастки управления, но и необходимые командлеты. Например, для того чтобы администрировать Active Directory с помощью Windows PowerShell на компьютере, который не является контроллером домена, необходимо установить модуль Active Directory для Windows PowerShell (RSAT-AD-PowerShell).

Примечание! Данный справочник составлен на основе командлетов версии PowerShell 5.0 в операционной системе Windows Server 2016.

Содержание

  1. Полезные командлеты Windows PowerShell
  2. Работа с переменными
  3. Форматирование в Windows PowerShell
  4. Импорт и экспорт
  5. Работа с сетью в Windows PowerShell
  6. Работа с элементами
  7. Командлеты для работы с Active Directory (AD)
  8. Работа с Hyper-V
  9. Работа с фоновыми заданиями
  10. Работа с объектами
  11. Командлеты PowerShell для удаленного управления
  12. Работа со службами и процессами
  13. Работа с компьютером
  14. Работа с контентом
  15. Другие командлеты 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 — возвращает список команд, введенных в ходе текущей сессии.

Работа с переменными

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

  • Get-Variable – выводит список переменных и их значения (или одну указанную переменную);
  • New-Variable – создает новую переменную;
  • Set-Variable – задает значение переменной. Если переменная с указанным именем не существует, то она будет создана;
  • Clear-Variable — удаляет значение переменной;
  • Remove-Variable — удаляет переменную и ее значение.

Заметка! Программирование на языке PowerShell.

Форматирование в Windows PowerShell

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

  • Format-List – вывод результата команды в формате списка свойств, где на каждой новой строке отдельное свойство;
  • Format-Table — вывод результата команды в виде таблицы;
  • Format-Wide — вывод результата команды в виде широкой таблицы, в которой отображается только одно свойство каждого объекта;
  • Format-Custom – в данном случае форматирование вывода происходит с использованием пользовательского представления.

Импорт и экспорт

PowerShell позволяет импортировать и экспортировать данные в разных распространенных форматах, например, CSV или XML, а также перенаправлять вывод результата работы команды во внешний файл или на принтер.

  • Export-Csv – экспорт данных в формат CSV;
  • Import-Csv – импортирует данные из CSV файла;
  • Export-Clixml — экспорт данных в формат XML;
  • Import-Clixml — импортирует файл CLIXML и создает соответствующие объекты в оболочке Windows PowerShell;
  • Out-File — посылает вывод результата работы командлета во внешний файл (например, в TXT);
  • Out-Printer — вывод результата работы команды на принтер;
  • Import-Module — добавляет модули в текущей сессии.

Работа с сетью в Windows PowerShell

Для администрирования сети в Windows PowerShell существуют такие командлеты как:

  • Disable-NetAdapter – командлет отключает сетевой адаптер;
  • Enable-NetAdapter – данный командлет включает сетевой адаптер;
  • Rename-NetAdapter — переименовывает сетевой адаптер;
  • Restart-NetAdapter — перезапускает сетевой адаптер;
  • Get-NetIPAddress – выводит информацию о конфигурации IP-адреса;
  • Set-NetIPAddress — изменяет конфигурацию IP-адреса;
  • New-NetIPAddress — создает и настраивает IP-адрес;
  • Remove-NetIPAddress — удаляет IP-адрес и его конфигурацию;
  • Get-NetRoute — выводит таблицу маршрутизации IP;
  • Set-NetRoute — изменяет таблицу маршрутизации IP;
  • New-NetRoute — создает запись в таблице маршрутизации IP;
  • Remove-NetRoute — удаляет одну или несколько записей (IP маршрутов) из таблицы маршрутизации IP;
  • Get-NetIPv4Protocol — выводит информацию о конфигурации протокола IPv4;
  • Get-NetIPv6Protocol — выводит информацию о конфигурации протокола IPv6;
  • Get-NetIPInterface — выводит информацию о свойствах интерфейса IP;
  • Get-NetTCPSetting — показывает информацию о настройках и конфигурации TCP;
  • Test-Connection – командлет посылает ICMP пакеты к одному или нескольким компьютерам, т.е. «пингует» компьютеры.

Заметка! Описание и назначение ролей сервера в Windows Server 2016.

Работа с элементами

В Windows PowerShell есть командлеты, которые умеют работать с элементами, под элементами здесь можно понимать: файлы, папки, ключи реестра и так далее.

  • Clear-Item — очищает содержимое элемента, но не удаляет сам элемент;
  • Copy-Item – копирует элемент;
  • Get-Item — получает элемент в указанном месте;
  • Invoke-Item — выполняет действие по умолчанию над указанным элементом;
  • Move-Item – перемещает элемент;
  • New-Item – создает новый элемент;
  • Remove-Item – удаляет указанные элементы;
  • Rename-Item — переименовывает элемент в пространстве имен поставщика Windows PowerShell;
  • Set-Item — изменяет элемент;
  • Get-ChildItem — возвращает элементы и дочерние элементы в одном или нескольких определенных местах;
  • Get-Location – выводит информацию о текущем местонахождении.

Командлеты для работы с Active Directory (AD)

Windows PowerShell, конечно же, позволяет работать со службой каталогов Active Directory. Для этих целей существует немало командлетов, вот некоторые из них:

Курс по SQL для начинающих

  • New-ADUser – создание нового пользователя в Active Directory;
  • Get-ADUser – выводит информацию о пользователях Active Directory;
  • Set-ADUser — изменяет пользователя Active Directory;
  • Remove-ADUser — удаляет пользователя Active Directory;
  • New-ADGroup – командлет создает группу в Active Directory;
  • Get-ADGroup – выводит информацию о группе или выполняет поиск, чтобы получить несколько групп из Active Directory;
  • Set-ADGroup – командлет изменяет группу в Active Directory;
  • Remove-ADGroup — удаление группы в Active Directory;
  • Add-ADGroupMember — командлет добавляет учетные записи пользователей, компьютеров или групп в качестве новых членов группы Active Directory;
  • Get-ADGroupMember — выводит информацию о членах группы Active Directory;
  • Remove-ADGroupMember — удаление элементов из группы Active Directory;
  • Set-ADAccountPassword — сброс пароля учетной записи Active Directory;
  • Disable-ADAccount — отключает учетную запись Active Directory.
  • Enable-ADAccount — включает учетную запись Active Directory;
  • Unlock-ADAccoun — разблокирует учетную запись Active Directory;
  • New-ADComputer — создание новой учетной записи компьютера в Active Directory;
  • Get-ADComputer — выводит информацию об одном или нескольких компьютерах в Active Directory;
  • Set-ADComputer — изменение учетной записи компьютера в Active Directory;
  • Remove-ADComputer — удаление компьютера из Active Directory.

Работа с Hyper-V

Для работы с Hyper-V в Windows PowerShell существует много командлетов, вот небольшой перечень:

  • New-VM — создание новой виртуальной машины;
  • Set-VM — настройка виртуальной машины;
  • Start-VM — запуск виртуальной машины;
  • Stop-VM — закрытие, выключение или сохранение виртуальной машины;
  • Import-VM — импорт виртуальной машины из файла;
  • Move-VM — перемещение виртуальной машины на новый Hyper-V хост;
  • Remove-VM — удаление виртуальной машины;
  • Rename-VM — переименование виртуальной машины;
  • New-VHD — создание одного или нескольких новых виртуальных жестких дисков;
  • Set-VHD – настройка виртуального жесткого диска;
  • Test-VHD — тестирование виртуального жесткого диска на предмет обнаружения проблем, которые сделали бы его непригодным для использования;
  • Add-VMDvdDrive — добавляет DVD диск к виртуальной машине;
  • Remove-VMDvdDrive — удаляет DVD-диск из виртуальной машины;
  • Add-VMHardDiskDrive — добавляет жесткий диск к виртуальной машине;
  • Remove-VMHardDiskDrive — удаляет один или несколько виртуальных жестких дисков (VHD) из виртуальной машины;
  • Add-VMNetworkAdapter — добавляет виртуальный сетевой адаптер на виртуальной машине;
  • Remove-VMNetworkAdapter — удаляет один или несколько виртуальных сетевых адаптеров из виртуальной машины;
  • Copy-VMFile — копирование файлов на виртуальную машину;
  • Get-VMVideo – выводит информацию о настройках видео для виртуальных машин;
  • Move-VMStorage — перемещение хранилища виртуальной машины.

Заметка! Описание компонентов сервера в Windows Server 2016.

Работа с фоновыми заданиями

В Windows PowerShell есть возможность запускать задачи в фоновом режиме, для того чтобы, не дожидаясь окончания работы команды (для случаев, когда задача выполняется долго), продолжать работать в текущей сессии. Для работы с фоновыми заданиями в PowerShell есть следующие командлеты:

  • Start-Job – запустить фоновую задачу;
  • Stop-Job – остановить фоновую задачу
  • Get-Job – посмотреть список фоновых задач;
  • Receive-Job – посмотреть результат выполнения фоновой задачи;
  • Remove-Job – удалить фоновую задачу;
  • Wait-Job – перевести фоновую задачу на передний план, для того чтобы дожидаться ее окончания.

Работа с объектами

Так как PowerShell работает с объектами, он позволяет выполнять некие действия над этими объектами, например:

  • Measure-Object – командлет позволяет рассчитывать на основе свойств объектов такие числовые агрегирующие параметры как: минимальное, максимальное, среднее значение, сумму и количество. Например, Вы хотите узнать максимальный или средний размер файла в определенном каталоге, или просто узнать количество файлов (запущенных процессов, служб и так далее);
  • Select-Object – с помощью данного командлета можно выбрать определенные объекты или свойства этих объектов, например Вы хотите выводить только название файла и его размер;
  • Sort-Object — сортирует объекты по значениям свойств;
  • Where-Object – командлет для того чтобы ставить условие для выборки объектов на основе значений их свойств;
  • Group-Object – группирует объекты, которые содержат одинаковое значение для заданных свойств;
  • ForEach-Object – перебор объектов с целью выполнения определенной операции над каждым из этих объектов.

Командлеты PowerShell для удаленного управления

С помощью Windows PowerShell можно выполнять команды не только на локальном компьютере, но и на одном или даже на нескольких удаленных компьютерах.

  • Enter-PSSession — запускает интерактивный сеанс с удаленным компьютером;
  • Exit-PSSession — завершает интерактивный сеанс с удаленным компьютером;
  • New-PSSession — создает постоянное подключение к локальному или удаленному компьютеру;
  • Remove-PSSession — закрывает один или несколько сеансов Windows PowerShell;
  • Disconnect-PSSession — отсоединяется от сеанса;
  • Connect-PSSession — подключается к отключенным сеансам;
  • Get-PSSession — получает сеансы Windows PowerShell на локальных и удаленных компьютерах;
  • Invoke-Command — выполняет команды на локальном и удаленных компьютерах.

Работа со службами и процессами

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

  • Get-Process – выводит информацию о запущенных процессах на компьютере;
  • Start-Process – запускает один или несколько процессов на компьютере;
  • Stop-Process — останавливает один или несколько запущенных процессов;
  • Get-Service – выводит информацию о службах;
  • Restart-Service – перезапускает службу;
  • Start-Service – запускает службу;
  • Stop-Service — останавливает службу;
  • Suspend-Service – приостанавливает работу службы;
  • Set-Service – с помощью данного командлета можно изменить свойства службы, например, описание, отображаемое имя и режим запуска. Также его можно использовать для запуска, остановки или приостановки службы.

Заметка! Установка файлового сервера (File Server) на Windows Server 2016.

Работа с компьютером

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

  • Restart-Computer – командлет перезапускает операционную систему (перезагружает компьютер);
  • Stop-Computer – выключает компьютер;
  • Rename-Computer – переименовывает компьютер;
  • Checkpoint-Computer — создает точку восстановления системы на локальном компьютере;
  • Restore-Computer — запускает восстановление системы на локальном компьютере;
  • Disable-ComputerRestore — отключает функцию восстановления системы на указанном диске файловой системы;
  • Enable-ComputerRestore — включает функцию восстановления системы на указанном диске файловой системы;
  • Remove-Computer — удаляет локальный компьютер из домена;
  • Get-EventLog – выводит информацию о событиях в журнале событий, или список журналов событий на локальном или удаленном компьютере;
  • Clear-EventLog — удаляет записи из указанных журналов событий.

Работа с контентом

Для управления контентом, например, текстом в файле в Windows PowerShell существуют специальные командлеты, такие как:

  • Get-Content – получает содержимое элемента (например, считывает файл);
  • Add-Content – добавляет содержимое в заданные элементы, например, текст в файл;
  • Clear-Content — удаляет содержимое элемента, но не удаляет сам элемент;
  • Set-Content — записывает или заменяет содержимое в элемент с новым содержанием.

Другие командлеты Windows PowerShell

Также хотелось бы выделить следующие командлеты Windows PowerShell, которые наверняка Вам понадобятся и будут полезны.

  • Get-ExecutionPolicy – с помощью данного командлета можно узнать действующую политику выполнения Windows PowerShell для текущего сеанса;
  • Set-ExecutionPolicy – командлет изменяет политику выполнения Windows PowerShell;
  • Write-Host – выводит информацию на экран (пишет текст);
  • Read-Host – считывает строку ввода из консоли;
  • Write-Warning – выводит предупреждающее сообщение;
  • Write-Error – командлет объявляет ошибку и выводит ее в поток ошибок;
  • Get-Date – возвращает текущую дату и время;
  • Set-Date – командлет изменяет системную дату и время на компьютере.

Заметка! Курсы по SQL для начинающих на примере Microsoft SQL Server.

Вот мы с Вами и рассмотрели полезные и часто используемые командлеты Windows PowerShell, надеюсь, этот справочник будет Вам полезен, удачи!

Шпаргалка Powershell

Когда дело доходит до запуска команд в Windows, PowerShell стал чем-то вроде туза в дыре. В течение многих лет энтузиасты ограничивались рамками командной строки Windows, но в 2006 году PowerShell стала мощной альтернативой..

Contents

  • 1 Что такое PowerShell?
  • 2 Команды PowerShell
  • 3 Шпаргалка PowerShell (PDF)
  • 4 Как использовать PowerShell
  • 5 PowerShell против командной строки
  • 6 Загрузка PowerShell
  • 7 Как запустить командлеты
  • 8 Как запускать скрипты
  • 9 Перекрываются с помощью команд Windows
  • 10 Резервное копирование базы данных SQL
  • 11 Основные команды PowerShell
    • 11.1 Получить помощь
    • 11.2 Get-Service
    • 11.3 ConvertTo-HTML
    • 11.4 Экспорт-CSV (и Get-Сервис)
    • 11.5 Get-Process
    • 11.6 Get-EventLog
    • 11.7  Stop-Process
  • 12 PowerShell: мощный интерфейс командной строки

PowerShell — это интерактивный Интерфейс командной строки (CLI) и механизм автоматизации, разработанный Microsoft для разработки конфигураций системы и автоматизации административных задач. Этот инструмент имеет собственную командную строку с уникальным языком программирования, похожим на Perl. Изначально PowerShell был разработан для управления объектами на компьютерах пользователей..

Сегодня PowerShell предлагает пользователям обширную среду, в которой они могут выполнять и автоматизировать задачи управления системой. Пользователь может получить доступ к ресурсам из Active Directory на Exchange Server через одну программу. По своей сути PowerShell позволяет пользователю получить доступ к:

  • Командная строка
  • Команды PowerShell
  • .NET Framework API
  • Инструментарий управления Windows
  • Компонентная объектная модель Windows

Поскольку PowerShell стал приложением с открытым исходным кодом, пользователи Linux и Unix теперь могут получить доступ к этой универсальной платформе. PowerShell в основном используется, чтобы помочь пользователям автоматизировать административные задания. Вместо выполнения утомительных и повторяющихся задач пользователь может просто создавать сценарии и выполнять команды, и PowerShell выполнит их автоматически. Пользователь может настроить сотни команд, называемых командлеты.

Команды PowerShell

Вот 25 основных команд PowerShell:

Имя команды AliasDescription

Set-Location cd, chdir, sl Устанавливает текущее рабочее место в указанное место.
Get-Content кот, gc, тип Получает содержимое элемента в указанном месте.
Добавить контент переменный ток Добавляет содержимое к указанным элементам, например, добавляет слова в файл.
Set-Content Южная Каролина Записывает или заменяет содержимое элемента новым содержимым.
Copy-Item копировать, cp, cpi Копирует элемент из одного места в другое.
Удалить объект del, erase, rd, ri, rm, rmdir Удаляет указанные элементы.
Move-Item ми, двигаться, мв Перемещает элемент из одного места в другое.
Set-Item си Изменяет значение элемента на значение, указанное в команде.
New-Item п Создает новый предмет.
Start-Job sajb Запускает фоновое задание Windows PowerShell.
Compare-Object сравнить, диф Сравнивает два набора объектов.
Group-Object группа Группирует объекты, содержащие одинаковое значение для указанных свойств.
Invoke-WebRequest завиток, IWR, Wget Получает контент с веб-страницы в Интернете.
Мера-объект мера Вычисляет числовые свойства объектов, а также символы, слова и строки в строковых объектах, таких как файлы…
Resolve-Path rvpa Разрешает символы подстановки в пути и отображает содержимое пути.
Резюме-Job rujb Возобновляет приостановленную работу
Set-Variable установить, св Устанавливает значение переменной. Создает переменную, если переменная с запрошенным именем не существует.
Show-Command shcm Создает команды Windows PowerShell в графическом окне команд.
Сортировка-объект Сортировать Сортирует объекты по значениям свойств.
Start-Service sasv Запускает одну или несколько остановленных служб.
Запуск процесса Соки, начало Запускает один или несколько процессов на локальном компьютере.
Приостановить-Job sujb Временно останавливает задания рабочего процесса.
Wait-Job WJB Подавляет командную строку, пока одно или все фоновые задания Windows PowerShell, запущенные в сеансе, не будут…
Where-Object ?, где Выбирает объекты из коллекции на основе значений их свойств.
Write-Output эхо, пиши Посылает указанные объекты следующей команде в конвейер. Если команда является последней командой в конвейере,…

Вот наша PDF-версия Шпаргалки PowerShell. Нажмите на изображение ниже, чтобы открыть PDF в отдельной вкладке браузера, которую вы можете сохранить и использовать в качестве краткого справочника..

Шпаргалка PowerShell (PDF)

Comparitech-Powershell-шпаргалка

Как использовать PowerShell

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

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

У Удеми есть несколько лучших курсов по PowerShell, которые могут оказаться полезными.

PowerShell против командной строки

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

Существует синтаксис между двумя платформами, так как PowerShell будет принимать некоторые команды командной строки, такие как ipconfigtocd. Однако они известны как псевдонимы, а не командлеты. Другое ключевое отличие заключается в том, что PowerShell сосредоточен на объектах. Каждый фрагмент данных, выводимый из командлета, является объектом, а не текстом. Это облегчает пользователю навигацию по сложным данным. Включение .NET Framework также позволяет сценариям PowerShell использовать интерфейсы .NET. Короче говоря, PowerShell — это командная строка на стероидах.

Загрузка PowerShell

Прежде чем мы углубимся в основы использования PowerShell, вам сначала необходимо получить доступ к основному интерфейсу. Если вы являетесь пользователем Windows 10, то у вас уже будет доступ к PowerShell 5. Пользователи Windows 8-8.1 имеют доступ к PowerShell 4, но если вы работаете в Windows 7, вам нужно будет установить его в .NET фреймворк. Во всех операционных системах PowerShell предлагает два различных интерфейса.

Более продвинутой является интегрированная среда сценариев, которая выступает в качестве комплексного графического интерфейса для опытных пользователей. Основной альтернативой является консоль PowerShell, которая предоставляет пользователю командную строку для ввода своих команд. Новичкам рекомендуется придерживаться последних, пока они не изучат основы PowerShell.

Чтобы запустить PowerShell в Windows 10, вам необходимо быть администратором. Войдите в систему как администратор, нажмите Начало, и прокрутите свои приложения, пока не найдете Windows PowerShell. Щелкните правой кнопкой мыши и выберите Запустить от имени администратора. В Windows 8.1 просто найдите PowerShell в своем система папки. Аналогично, в Windows 7 каталог по умолчанию для PowerShell — это аксессуары папка после того, как вы установили программу.

Как запустить командлеты

как запустить командлеты PowerShell

В двух словах, командлет — это однофункциональная команда. Вы вводите командлеты в командную строку, как если бы вы использовали обычную команду или утилиту. Командлеты являются основным способом взаимодействия с CLI. В PowerShell большинство командлетов написаны на C # и состоят из инструкций, предназначенных для выполнения функции, возвращающей объект .NET..

В PowerShell можно использовать более 200 командлетов. В командной строке Windows PowerShell не учитывается регистр, поэтому эти команды можно вводить как в верхнем, так и в нижнем регистре. Основные командлеты перечислены ниже:

  • Get-Location — Получить текущий каталог
  • Set-Location — Получить текущий каталог
  • Move-пункт — Переместить файл в новое место
  • Прописи пункт — Скопируйте файл в новое место
  • Rename — пункт Переименовать существующий файл
  • New-пункт — создать новый файл

Для получения полного списка доступных вам команд используйте командлет Get-Command. В командной строке вы должны ввести следующее:

PS C: > Get-Command

Важно отметить, что Microsoft запрещает пользователям использовать собственные командлеты PowerShell в своих настройках по умолчанию. Чтобы использовать командлеты PowerShell, необходимо изменить ExecutionPolicy из Ограниченный в RemoteSigned. Удаленная подпись позволит вам запускать свои собственные сценарии, но остановит неподписанные сценарии от других пользователей.

Чтобы изменить политику выполнения, введите следующую команду PowerShell:

PS C: >   Set-ExecutionPolicy

Поменять на RemoteSigned, введите следующую команду:

PS C: > Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

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

Как запускать скрипты

как запускать скрипты powershell

Основанные на сценариях процессы и команды являются частью универсальности PowerShell. В PowerShell сценарий представляет собой текстовый файл с расширением ps1 в имени файла. Чтобы создать новый сценарий, вы можете просто открыть блокнот Windows, ввести свои команды и сохранить с помощью «.ps1» в конце имени.

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

PS c: powershell mynewscript.ps1

Как только вы это сделаете, выбранный вами скрипт будет запущен.

Хотите создать свои собственные скрипты PowerShell? Почти 5 тысяч студентов прошли этот курс удемского языка по расширенным сценариям с помощью PowerShell.

Перекрываются с помощью команд Windows

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

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

При этом важно отметить, что они не считаются полными командами PowerShell, а являются псевдонимами (имя Powershell для команд командной строки Windows). Поэтому, хотя вы можете попробовать некоторые из команд командной строки в PowerShell, вы должны узнать как можно больше о новых. Тем не менее, опыт командной строки, безусловно, может помочь новым пользователям осваивать PowerShell и приступить к работе..

Резервное копирование базы данных SQL

PowerShell SQL

Многие люди используют PowerShell для резервного копирования баз данных SQL. Интерфейс командной строки может выполнять полное резервное копирование базы данных, резервное копирование файлов и журналов транзакций. Существует много способов резервного копирования базы данных в PowerShell, но одним из самых простых является использование команды Backup-SqlDatabase. Например:

PS C: > Backup-SqlDatabase -ServerINstance «Компьютер Экземпляр» -Database «Databasecentral»

Это создаст резервную копию базы данных с именем «Databasecentral» (или именем выбранной вами базы данных)..

Для резервного копирования журнала транзакций вы должны ввести:

PS C: > Backup-SqlDatabase -ServerInstance «Компьютер Экземпляр» -Database «Databasecentral» -BackupAction Log

Это создаст журнал транзакций выбранной базы данных.

Основные команды PowerShell

Использование псевдонимов только поможет вам понять PowerShell, поэтому важно посвятить себя изучению всех возможностей собственных команд PowerShell. Мы затронули некоторые из них выше, но мы разберем основные из них более подробно ниже..

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

Эта команда должна быть в самом верху списка любого нового пользователя, когда дело доходит до PowerShell. Команду Get-Help можно использовать для буквального получения справки по любой другой команде PowerShell. Например, если вы знаете имя команды, но не знаете, что она делает или как ее использовать, команда Get-Help предоставляет полный синтаксис команды.

Например, если вы хотите посмотреть, как работает Get-Process, введите:

PS C: > Get-Help -Name Get-ProcessPS C: > Set-ExecutionPolicy

Как уже упоминалось ранее в этом руководстве, у Microsoft есть ограниченная политика выполнения, которая запрещает выполнение сценариев в PowerShell, если вы не измените ее. При настройке политики выполнения у вас есть четыре варианта на выбор:

  • Ограниченный — Политика выполнения по умолчанию, которая останавливает выполнение скриптов.
  • Все подписано — Запустит сценарии, если они подписаны доверенным издателем
  • Удаленная подпись — Позволяет запускать скрипты, которые были созданы локально
  • неограниченный — Политика без ограничений на запуск скриптов

PS C: > Get-ExecutionPolicy

Если вы используете PowerShell, вы не всегда можете работать на сервере, с которым вы знакомы. Выполнение команды Политика Get-Execution позволит вам увидеть, какая политика активна на сервере, прежде чем запускать новый скрипт. Если затем вы увидите, что рассматриваемый сервер работает с ограниченной политикой, вы можете реализовать Set-ExecutionPolicy команда изменить его.

Get-Service

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

Например, если вы набрали PS C: > Get-Service, вам будет показан список всех служб на вашем компьютере, их статусы и отображаемые имена.

Чтобы использовать эту команду для получения определенных служб, введите: PS C: Get-Service «WMI *», чтобы получить все службы, начинающиеся с WMI..

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

PS C: Get-Service | Where-Object {$ _. Status -eq «Выполняется»}

ConvertTo-HTML

При использовании PowerShell вы можете создать отчет о просмотренной вами информации. Один из лучших способов сделать это, используя ConvertTo-HTML команда. Этот командлет позволяет создавать отчеты с таблицами и цветом, что может помочь визуализировать сложные данные. Просто выберите объект и добавьте его в команду. Например, вы можете ввести:

Get-PSDrive | ConvertTo-Html

Это возвращает массу информации, поэтому рекомендуется ограничить ее файлом с помощью команды Out-File. Лучшая альтернативная команда:

Get-PSD Drive | ConvertTo-Html | Out-File -FilePath PSDrives.html

Затем будет сгенерирован HTML-файл в виде таблицы. Например:

html-таблица powershell

Затем вы можете добавить свои собственные цвета и границы, чтобы уточнить его представление.

Экспорт-CSV (и Get-Сервис)

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

Чтобы использовать эту команду, вы должны набрать:

PS C: > Get-Service | Export-CSV c: service.csv

Важно помнить, что не нужно форматировать объекты перед запуском команды Export-CSV. Это связано с тем, что форматирование объектов приводит к тому, что в файл CSV помещаются только отформатированные свойства, а не сами исходные объекты. В случае, если вы хотите отправить определенные свойства объекта в файл CSV, вы должны использовать Select-Object командлет.

Чтобы использовать Select-Object командлет, тип:

PS C: > Get-Service | Выбор-Имя объекта, Статус | Export-CSV c: Service.csv

Get-Process

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

PS C: Get-Process

Обратите внимание, что если вы не укажете какие-либо параметры, вы получите разбивку всех активных процессов на вашем компьютере. Чтобы выбрать конкретный процесс, сузьте результаты по имени процесса или идентификатору процесса и объедините его с Format-List Командлет, который отображает все доступные свойства. Например:

PS C: Get-Process Windowrd, проводник | Формат-Список *

Это дает вам полный контроль над всеми активными процессами.

Get-EventLog

получить командлет безопасности eventlog

Если вы когда-нибудь захотите получить доступ к журналам событий вашего компьютера (или журналам на удаленных компьютерах) при использовании PowerShell, то вам понадобится Get-EventLog команда. Этот командлет работает только с классическими журналами событий, поэтому вам понадобится Get-WinEvent команда для журналов позже, чем Windows Vista.

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

PS C: > Get-EventLog -List

Это покажет все журналы событий на вашем компьютере.

Одна из наиболее распространенных причин, по которой пользователи просматривают журналы событий, — это ошибки. Если вы хотите видеть ошибки в вашем журнале, просто введите:

PS C: > Get-EventLog -LogName System -EntryType Ошибка

Если вы хотите получать журналы событий с нескольких компьютеров, укажите, какие устройства вы хотите просмотреть (перечислены ниже как «Сервер1» и «Сервер2»). Например:

PS C: > Get-EventLog — LogName «Windows PowerShell» -ComputerName «локальный компьютер», «Server1», «Server2».

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

  • После — Пользователь указывает дату и время, а командлет будет определять события, которые произошли после
  • AsBaseObject — Предоставляет System.Diagnostics.EventLogEntry для каждого события
  • AsString — возвращает вывод в виде строк
  • Перед — Пользователь указывает дату и время, а командлет будет находить события, которые произошли до
  • Имя компьютера — Используется для обозначения удаленного компьютера
  • EntryType — Указывает тип записи событий (Ошибка, Аудит отказов, Аудит успеха, Информация, Предупреждение)
  • Показатель — Указывает значения индекса, из которого командлет находит события
  • Список — Предоставляет список журналов событий
  • UserName — Определяет имена пользователей, связанные с данным событием

 Stop-Process

Стоп-процесс PowerShell

При использовании PowerShell нередки случаи зависания процесса. Всякий раз, когда это происходит, вы можете использовать Get-Process получить имя процесса, испытывающего трудности, а затем остановить его с помощью Stop-Process команда. Как правило, вы завершаете процесс по его имени. Например:

PS C: > Stop-Process -Название «Блокнот»

В этом примере пользователь завершил работу Блокнота с помощью команды Stop-Process.

PowerShell: мощный интерфейс командной строки

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

Будучи новым пользователем, легко напасть на 200 с лишним командлетов PowerShell. Убедитесь, что вы начинаете с интерфейса командной строки, прежде чем перейти к полноценному графическому интерфейсу. Независимо от того, являетесь ли вы новичком в PowerShell или интерфейсах командной строки, в Интернете доступно более чем достаточно информации, чтобы помочь вам максимально эффективно использовать этот мощный инструмент.

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

Команды PowerShell, которые помогут пользователю сделать больше

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

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

  1. Запустите приложение UWP.
  2. Получить справку о любом командлете.
  3. Получите похожие команды.
  4. Найти определенный файл.
  5. Прочитайте содержимое файла.
  6. Найти информацию обо всех услугах на компьютере.
  7. Найти информацию обо всех процессах на компьютере.
  8. Установка политики выполнения.
  9. Скопируйте файл или каталог.
  10. Удалить файл или каталог.

1] Запустите приложение UWP

PowerShell – отличный инструмент, который можно использовать для запуска приложений UWP за считанные секунды. Но главное заключается в правильном выполнении команды. Ты можешь использовать

 Start-Process "ms-settings:" 

Команда просто для запуска приложения Windows Настройки UWP. Вы можете узнать больше о других URI для других приложений UWP здесь на microsoft.com.

2] Получите справку о любом командлете

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

 Get-Help
Получить помощь
Get-Help -Full
Get-Help -Example
Get-Help * 

Здесь первая запись расскажет вам, как использовать этот командлет. Вторая запись даст вам простое резюме конкретного командлета. Третья запись даст подробную информацию о соответствующем командлете. Четвертая запись будет содержать все, что показывает третий командлет, но добавит пример того, как использовать этот командлет. И, наконец, пятый командлет перечислит каждую команду, которая доступна для вашего использования.

3] Получить похожие команды

Чтобы найти команды аналогичного типа или содержащие в себе определенную фразу, вы можете использовать командлет Get-Command . Однако в нем не перечислен каждый командлет в PowerShell, поэтому вы используете некоторые конкретные фильтры. Вы можете использовать следующие команды:

 Get-Command -Name
Get-Command -CommandType 

Первый командлет поможет вам найти командлет с определенной фразой, а второй – отфильтровать командлеты, выполняющие определенную функцию.

4] Поиск определенного файла

Если вам нужно найти определенный файл или каталог в определенном месте, вы можете использовать командлет Get-Item . Вы можете использовать его как

 Get-Item 

перечислить содержимое конкретного пути.

5] Прочитайте содержимое файла

Если вам нужно прочитать содержимое файла, вы можете использовать команду Get-Content как

 Get-Content 

6] Прочтите информацию обо всех службах на компьютере .

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

 Start-Service
Стоп-Service
Suspend-Service
Resume-Service
Рестарт-Сервис 

7] Читайте информацию обо всех процессах на компьютере

Подобно командлету Get-Service, вы можете использовать командлет Get-Process , чтобы вывести список всех процессов, запущенных на вашем компьютере.В качестве альтернативы вы можете использовать следующие связанные командлеты для выполнения соответствующих функций:

 Запуск процесса
Stop-Process
Служба ожидания 

8] Настройка политики выполнения

Хотя в PowerShell поддерживается создание и выполнение сценариев, существуют ограничения для каждого из них в рамках некоторых мер безопасности. Вы можете переключить уровень безопасности на любой из 4 уровней. Вы можете использовать командлет Set-ExecutionPolicy , а затем любой из уровней безопасности, указанных в

 Set-ExecutionPolicy Неограниченный
Set-ExecutionPolicy Все подписано
Set-ExecutionPolicy Удаленная подпись
Set-ExecutionPolicy Restricted 

Здесь политики сверху вниз варьируются от самого низкого до самого высокого уровня безопасности.

9] Скопируйте файл или каталог

Пользователь может использовать командлет Copy-Item для копирования одного файла или каталога в другое место назначения. Синтаксис этого командлета

 Copy-Item "E:  TWCTest.txt" -Destination "D: " 

10] Удалить файл или каталог

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

 Remove-Item "E:  TWCTest.txt" 

У вас есть другие полезные командлеты, которыми вы можете поделиться со всеми нами? Не стесняйтесь записывать их в поле для комментариев ниже.

Рассказываем про Windows PowerShell — технологию для автоматизации рутинных задач, пришедшую на смену bat-файлам.

Работа с консолью Microsoft Windows

Ранее мы рассматривали командные интерпретаторы COMMAND.CMD и CMD.EXE, обеспечивающие автоматизацию задач в семействе операционных систем Microsoft Windows. Фактически данные интерпретаторы не получали обновлений с начала 2000-х годов и существуют в современных операционных системах для обеспечения совместимости.

Подробнее о bat-файлах →

Хотя современные операционные системы предлагают богатый на функции графический интерфейс, ряд однотипных задач быстрее решается через консоль. Более того, серверные редакции ОС не предоставляют графический интерфейс по умолчанию, поэтому интерпретатор командной строки является неотъемлемой частью практически любой операционной системы.

Помимо отсутствия обновлений, CMD.EXE имеет ограниченный функционал. Он не позволяет писать сложную логику и полностью отказаться от использования графического интерфейса. Корпорация Microsoft пыталась решить эти проблемы с помощью инструмента под названием Microsoft Script Host, который имел интеграцию со скриптовыми языками JScript и VBScript.

Однако Microsoft Script Host имел ряд собственных проблем:

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

Все это побуждало Microsoft сделать командный интерпретатор с нуля.

В 2003 году корпорация Microsoft начала разработку нового инструмента — Microsoft Shell (MSH), или Monad. Спустя три года и три бета-версии Monad была официально выпущена под новым названием Windows PowerShell 1.0 на Windows XP и Windows Vista. По ходу развития командная оболочка меняла свои названия на PowerShell Core и PowerShell.

При создании PowerShell разработчики задались целью создать инструмент, который позволил бы с легкостью использовать множество разнородных интерфейсов, предоставляемых операционной системой. Новый инструмент должен быть консистентным и легким для администратора, несмотря на количество технологий «под капотом». Например, PowerShell предоставляет доступ к API .NET-фреймворка, но не требует от администратора знания .NET.

Как и любой командный интерпретатор, PowerShell умеет запускать исполняемые файлы и имеет встроенные команды. Однако у PowerShell встроенные команды имеют название «командлет», появившееся от английского cmdlet.

Что такое командлет?

В основе взаимодействия с PowerShell лежат объекты, а не текст, как у CMD.EXE и командных интерпретаторов в *nix-системах. Такой подход меняет взгляд на организацию встроенных команд.

Командлет — это встроенная команда в PowerShell, выполняющая одну задачу и реализованная на .NET. Имя командлета соответствует правилу Глагол-Существительное, которое можно читать как Действие-Объект.

Самый важный командлет, о котором необходимо узнать в первую очередь, — Get-Help. Он отображает справочную информацию о PowerShell и командлетах.

# Получить общую справку по PowerShell
Get-Help

# Получить справку по командлету Get-Content
Get-Help Get-Content

# Получить справку по командлету Get-Help
Get-Help Get-Help

Если вам кажется, что использовать большие буквы в названии командлетов — это перебор, для вас есть хорошие новости. Все команды в PowerShell являются регистронезависимыми. Иными словами, перечисленные ниже написания эквивалентны:

Get-Help Get-Help
get-help get-help
GET-HELP GET-HELP
GeT-hElP gEt-HeLp

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

В первой версии PowerShell все командлеты были реализованы на .NET, но начиная с версии 2.0 появилась возможность писать командлеты с использованием синтаксиса PowerShell.

Основы программы PowerShell

Перейдем к практике. PowerShell является кроссплатформенным инструментом и может быть запущена на Linux и macOS, но в данной статье будет рассматриваться только «родное» окружение — Windows.

Как запустить?

Программа в меню

Запуск PowerShell можно произвести из меню поиска около кнопки Пуск, набрав powershell.

PowerShell в меню

Аналогично можно запустить PowerShell через диалоговое окно Выполнить…, которое открывается через сочетание клавиш Windows + R.

Если по каким-то причинам у вас не установлен PowerShell, то необходимо сделать это, следуя инструкции в базе знаний Microsoft.

Установка PowerShell

В случае успеха откроется синее окно. Windows PowerShell готов к вашим командам.

Синтаксис

Синтаксис PowerShell похож на синтаксис других командных интерпретаторов. Сначала команда, а затем аргументы команды. Несколько команд в одной строке разделяются точкой с запятой. Рассмотрим на примере.

Get-Help Get-Command -Online

Данная команда откроет в браузере вкладку с описанием командлета Get-Command в базе знаний Microsoft. Разберем подробнее:

  • Get-Help – команда, в данном случае командлет,
  • Get-Command – первый позиционный аргумент, который передается командлету,
  • -Online – ключ, то есть именованный аргумент.

Обратите внимание, что в CMD.EXE именованные аргументы, то есть ключи, для встроенных команд начинались с символа слэш (/). У командлетов аргументы начинаются со знака минус. Использование знака / в PowerShell недопустимо и будет интерпретировано как ошибка.

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

function Get-Version {
    $PSVersionTable.PSVersion
}

Данный код объявит функцию Get-Version, которая обращается к системной переменной (объекту) PSVersionTable и возвращает значение поля PSVersion. Проще говоря, выводит версию PowerShell.

Именование командлетов может быть неочевидным для администраторов с опытом работы с другими командными интерпретаторами. Поэтому рассмотрим основные команды Windows PowerShell.

Основные команды языка Windows PowerShell

В следующей таблице перечислены основные команды PowerShell и их аналоги в *nix-подобных системах и CMD.EXE. В версии PowerShell 7 количество командлетов превышает полторы тысячи!

Командлет (псевдоним) Команда в *nix Команда в CMD.exe Описание
Get-Location (pwd) pwd Выводит путь до текущего каталога
Set-Location (cd) cd cd Меняет текущий каталог
Get-ChildItem (ls) ls dir Выводит содержимое текущего каталога
Get-ChildItem find find Производит поиск файлов по заданным критериям
Copy-Item (cp) cp cp Копирует файл
Remove-Item (rm) rm rm Удаляет файл
New-Item (mkdir) mkdir mkdir Создает каталог
New-Item touch Создает пустой файл
Get-Content (cat) cat Выводит файлы
Get-Content tail Выводит последние 10 строк
Where-Object grep Производит фильтрацию
Create-Volume
Format-Volume
mkfs Форматирует раздел
Test-Connection ping ping.exe Отправляет ICMP-запросы, «пингует»
Get-Help (man) man help Показывает справку

После работы в консоли *nix командлет для популярного действия, смены каталога, выглядит громоздко и непривычно. К счастью, командлеты имеют псевдонимы (алиасы), которые могут не следовать правилу именования командлетов. Список известных псевдонимов можно получить с помощью командлета Get-Alias.

Хотя таблица, представленная выше, значительно облегчит назначение командлетов, не стоит ожидать от командлетов поведения как в *nix-системах. Так, например, в PowerShell командлет Get-Content создан для вывода содержимого одного файла на экран, в то время как на *nix-системах утилита cat изначально использовалась для конкатенации (процесса соединения) нескольких файлов с последующим выводом на экран.

Очевидно, что возможности PowerShell значительно больше, чем CMD.exe. Опытный администратор знает, что некоторые задачи из таблицы можно решить в CMD.exe, несмотря на отсутствие специальных команд. Однако эти команды требуют опыта или смекалки.

Утилита ping

Отдельно хочется отметить командлет Test-Connection, который делает то же самое, что утилита ping, но не имеет такого алиса. Разница между утилитой и командлетом в формате вывода: утилита выводит текст, а командлет возвращает объект, который можно использовать в конвейерах.

Конвейер PowerShell: особенности и параметры

По своей задумке конвейеры в PowerShell не отличаются от конвейеров в *nix-системах: они перенаправляют вывод одной команды на ввод другой. Как отмечалось ранее, в PowerShell происходит взаимодействие не с текстом, а с объектами. При выводе на экран объект трансформируется в таблицу, чтобы человеку было удобнее читать, но не всегда таблица выводит все поля объекта.

Особенность конвейеров PowerShell заключается в том, что конвейер передает результат не целиком, а по одному объекту. Командлет Test-Connection выводит четыре объекта: по одному на каждый ICMP-запрос. Если подключить командлет к конвейеру, то можно увидеть подтверждение этому тезису. Воспользуемся командлетом Select-Object, чтобы выбрать колонку со временем запроса.

Test-Connection selectel.ru | Select-Object ‘Time(ms)’

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

Test-connection

Но как же так? Дело в том, что отображение объекта при выводе на экран не всегда соответствует имени поля в объекте. Чтобы получить полный список полей в объекте, необходимо вызвать командлет Get-Member.

PS C:Userssun> Test-connection selectel.ru | Get-Member


   TypeName: System.Management.ManagementObject#rootcimv2Win32_PingStatus

Name                           MemberType     Definition
----                           ----------     ----------
PSComputerName                 AliasProperty  PSComputerName = __SERVER
Address                        Property       string Address {get;set;}
BufferSize                     Property       uint32 BufferSize {get;set;}
NoFragmentation                Property       bool NoFragmentation {get;set;}
PrimaryAddressResolutionStatus Property       uint32 PrimaryAddressResolutionStatus {get;set;}
ProtocolAddress                Property       string ProtocolAddress {get;set;}
ProtocolAddressResolved        Property       string ProtocolAddressResolved {get;set;}
RecordRoute                    Property       uint32 RecordRoute {get;set;}
ReplyInconsistency             Property       bool ReplyInconsistency {get;set;}
ReplySize                      Property       uint32 ReplySize {get;set;}
ResolveAddressNames            Property       bool ResolveAddressNames {get;set;}
ResponseTime                   Property       uint32 ResponseTime {get;set;}
ResponseTimeToLive             Property       uint32 ResponseTimeToLive {get;set;}
RouteRecord                    Property       string[] RouteRecord {get;set;}
RouteRecordResolved            Property       string[] RouteRecordResolved {get;set;}
SourceRoute                    Property       string SourceRoute {get;set;}
SourceRouteType                Property       uint32 SourceRouteType {get;set;}
StatusCode                     Property       uint32 StatusCode {get;set;}
Timeout                        Property       uint32 Timeout {get;set;}
TimeStampRecord                Property       uint32[] TimeStampRecord {get;set;}
TimeStampRecordAddress         Property       string[] TimeStampRecordAddress {get;set;}
TimeStampRecordAddressResolved Property       string[] TimeStampRecordAddressResolved {get;set;}
TimestampRoute                 Property       uint32 TimestampRoute {get;set;}
TimeToLive                     Property       uint32 TimeToLive {get;set;}
TypeofService                  Property       uint32 TypeofService {get;set;}
__CLASS                        Property       string __CLASS {get;set;}
__DERIVATION                   Property       string[] __DERIVATION {get;set;}
__DYNASTY                      Property       string __DYNASTY {get;set;}
__GENUS                        Property       int __GENUS {get;set;}
__NAMESPACE                    Property       string __NAMESPACE {get;set;}
__PATH                         Property       string __PATH {get;set;}
__PROPERTY_COUNT               Property       int __PROPERTY_COUNT {get;set;}
__RELPATH                      Property       string __RELPATH {get;set;}
__SERVER                       Property       string __SERVER {get;set;}
__SUPERCLASS                   Property       string __SUPERCLASS {get;set;}
ConvertFromDateTime            ScriptMethod   System.Object ConvertFromDateTime();
ConvertToDateTime              ScriptMethod   System.Object ConvertToDateTime();
IPV4Address                    ScriptProperty System.Object IPV4Address {get=$iphost = [System.Net.Dns]:...
IPV6Address                    ScriptProperty System.Object IPV6Address {get=$iphost = [System.Net.Dns]:...

Можно визуально оценить список и найти поле ResponseTime. Также в начале указан тип данного объекта, Win32_PingStatus, информацию о котором можно поискать в базе знаний Microsoft. В документации не только перечислены поля, но и их назначение. Таким образом, конечный вид конвейера будет таким:

Test-connection selectel.ru | Select-Object ResponseTime

Хотя PowerShell побуждает к интерактивной работе, его основное предназначение — автоматизировать рутинные задачи. Значит, необходимо писать скрипты.

Используйте PowerShell в работе с выделенным сервером

Соберите сервер в конфигураторе под свои задачи. Или выберите из более 100 готовых.

Подобрать

Интегрированная среда разработки

Среда разработки

Если вы запускали PowerShell через поиск, вероятно, вы могли заметить приложение Windows PowerShell ISE.

PowerShell-скрипты — это текстовые файлы с расширением .ps1.

Windows PowerShell ISE — это интегрированная среда сценариев PowerShell, включающая в себя:

  • редактор PowerShell-скриптов с автодополнением,
  • окно для интерактивного выполнения командлетов в скрипте,
  • список доступных командлетов с поиском.
Перечень команд
Справка Test-Connection

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

После написания своего первого PowerShell-скрипта вы столкнетесь с некоторыми ограничениями. Во-первых, файл с расширением ps1 нельзя запустить «двойным кликом» по файлу. Необходимо открыть контекстное меню с помощью правой клавиши мыши и выбрать Запустить с помощью PowerShell.

Во-вторых, скрипт не запустится со следующей ошибкой:

Невозможно загрузить файл C:UserssunDocumentsHelloWorld.ps1, так как выполнение сценариев отключено в этой системе. Для получения дополнительных сведений см. about_Execution_Policies по адресу https:/go.microsoft.com/fwlink/
?LinkID=135170.
    + CategoryInfo          : Ошибка безопасности: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnauthorizedAccess

По умолчанию запуск PowerShell-скриптов ограничен соответствующей политикой безопасности. Посмотреть текущее значение политики безопасности можно с помощью командлет Get-ExecutionPolicy:

PS C:Userssun> Get-ExecutionPolicy
Restricted

Список возможных значений:

  • Restricted — запуск запрещен,
  • AllSigned — разрешен только запуск подписанных доверенным разработчиком скриптов,
  • RemoteSigned — разрешен запуск подписанных и собственных скриптов,
  • Unrestricted — разрешен запуск любых скриптов.

По умолчанию стоит значение Restricted. В идеале необходимо подписывать скрипты, но для собственных нужд можно ограничиться значением RemoteSigned:

Set-ExecutionPolicy RemoteSigned

Для выполнения данной команды необходимо запустить PowerShell от имени администратора.

Выполнение задач в фоне

Консоль PowerShell

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

  • Start-Job —  запустить команду или командлет в фоновом режиме,
  • Get-Job — показать состояние фоновых команд,
  • Wait-Job — дождаться завершения выполнения фоновой команды,
  • Receive-Job — получить результат выполнения команды.

Командлет Start-Job возвращает информацию о запущенном фоновом задании. Идентификатор, обозначенный в поле Id, является уникальным для сессии PowerShell.

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

PowerShell позволяет реализовать удаленное выполнение командлетов, скриптов, но только на платформе Windows. Для включения возможности удаленного управления необходимо выполнить командлет Enable-PSRemoting с правами администратора.

Командлет Enter-PSSession запустит удаленную интерактивную сессию, а Invoke-Command выполнит команду на одном или нескольких удаленных компьютерах.

PowerShell – актуальные версии программы

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

На момент написания статьи актуальная версия PowerShell — 7.2. Используйте этот текст в качестве краткого справочника по Windows PowerShell, администрирование систем со скриптами в этой программе будет довольно простым. 

Содержание

  • 1 Написание и запуск скриптов
  • 2 Заключение
  • 3 Полезные командлеты Windows PowerShell
  • 4 Работа с переменными
  • 5 Форматирование в Windows PowerShell
  • 6 Импорт и экспорт
  • 7 Работа с сетью в Windows PowerShell
  • 8 Работа с элементами
  • 9 Командлеты для работы с Active Directory (AD)
  • 10 Работа с Hyper-V
  • 11 Работа с фоновыми заданиями
  • 12 Работа с объектами
  • 13 Командлеты PowerShell для удаленного управления
  • 14 Работа со службами и процессами
  • 15 Работа с компьютером
  • 16 Работа с контентом
  • 17 Другие командлеты Windows PowerShell

Перевод статьи «Windows PowerShell Scripting Tutorial for Beginners»

PowerShell — это объектно-ориентированный программный движок и скриптовый язык с интерфейсом командной строки, предоставляющий IT-профессионалам более широкие возможности для конфигурирования операционных систем семейства MS Windows. Проще говоря, это своего рода универсальный инструмент администрирования. В данной статье будут рассмотрены базовые приёмы написания скриптов на PowerShell, позволяющие простым путём автоматизировать управление Windows-окружением.

PowerShell предлагает как чисто консольный интерфейс, так и полноценную среду разработки PowerShell ISE (Integrated Scripting Environment, встроенное скриптовое окружение) для скриптов. Для запуска интерфейса командной строки введите powershell в меню «Выполнить» (WinKey + R). PowerShell ISE запускается с помощью команды «PowerShell ISE» в том же меню.

ISE более предпочтительно, так как предоставляет более широкие возможности разработчику благодаря подсветке синтаксиса, функции автозаполнения кода и другим особенностям, присущим многим «большим» IDE.

Написание и запуск скриптов

Скрипты сохраняются в виде файлов с расширением .ps1. Несмотря на то, что PowerShell уже давно является нативной частью ОС Windows, вы не сможете запустить его скрипты простым двойным щелчком. Для этого надо кликнуть правой кнопкой по скрипту и выбрать «Запустить в PowerShell».

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

  • Restricted — выполнение скриптов запрещено. Стандартная конфигурация;
  • AllSigned — можно запускать скрипты, подписанные доверенным разработчиком; перед запуском скрипта PowerShell запросит у вас подтверждение;
  • RemoteSigned — можно запускать собственные скрипты или те, что подписаны доверенным разработчиком;
  • Unrestricted — можно запускать любые скрипты.

Для начала работы необходимо изменить настройку политики запуска на RemoteSigned, используя команду Set-ExecutionPolicy:

Командлеты

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

  • существуют системные, пользовательские и опциональные командлеты;
  • результатом выполнения командлета будет объект или массив объектов;
  • командлеты могут обрабатывать данные и передавать их другим командлетам с помощью конвейеров;
  • командлеты нечувствительны к регистру, так что нет никакой разницы между Get-ADUser, get-aduser и gEt-AdUsEr;
  • в качестве разделителя используется символ ; .

Каждый командлет содержит в себе глагол и существительное, разделяемые дефисом. Например:

  • Get-Process — отобразить текущие процессы, запущенные на компьютере;
  • Get-Service — отобразить список служб и их статус;
  • Get-Content — отобразить содержимое указанного файла, например Get-Content C:WindowsSystem32driversetchosts.

При необходимости список всех доступных командлетов можно вывести с помощью Get-Help-Category:

Также можно создавать и свои собственные командлеты.

Параметры

У каждого командлета есть несколько параметров, определяющих его работу. PowerShell ISE автоматически предлагает все доступные параметры с отображением их типа. Например, Get-Service-NameW* выводит список служб, у которых имя начинается с W. Если вы забыли, какие параметры у введённого командлета, воспользуйтесь Get-Member. Например, Get-Process | Get-Member:

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

Некоторые командлеты также могут вызываться с помощью алиасов, например вместо Get-Help можно просто написать Help.

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

Конвейер

PowerShell позволяет осуществлять обмен данными между командлетами с помощью конвейера. Например:

  • GetService | SortObject -property Status — сортировка запущенных служб по статусу;
  • “Hello World!” | Out-File C:pstest.txt — запись текста в файл.

Можно использовать несколько конвейеров. Например, следующий скрипт выводит список имён всех служб за исключением остановленных:

Get-Service | WHERE {$_.status -eq “Running”} | SELECT displayname

Заключение

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

Не смешно? А здесь смешно: @ithumor

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

imge_12233.png

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

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

  1. Запустите приложение UWP.
  2. Получить справку о любом командлете.
  3. Получите похожие команды.
  4. Найти определенный файл.
  5. Прочитайте содержимое файла.
  6. Найти информацию обо всех услугах на компьютере.
  7. Найти информацию обо всех процессах на компьютере.
  8. Установка политики выполнения.
  9. Скопируйте файл или каталог.
  10. Удалить файл или каталог.

1] Запустите приложение UWP

imge_12235.png

PowerShell — отличный инструмент, который можно использовать для запуска приложений UWP за считанные секунды. Но главное заключается в правильном выполнении команды. Ты можешь использовать

 Start-Process "ms-settings:" 

Команда просто для запуска приложения Windows Настройки UWP. Вы можете узнать больше о других URI для других приложений UWP здесь на microsoft.com.

2] Получите справку о любом командлете

imge_12254.png

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

 Get-Help Получить помощь Get-Help -Full Get-Help -Example Get-Help * 

Здесь первая запись расскажет вам, как использовать этот командлет. Вторая запись даст вам простое резюме конкретного командлета. Третья запись даст подробную информацию о соответствующем командлете. Четвертая запись будет содержать все, что показывает третий командлет, но добавит пример того, как использовать этот командлет. И, наконец, пятый командлет перечислит каждую команду, которая доступна для вашего использования.

3] Получить похожие команды

Чтобы найти команды аналогичного типа или содержащие в себе определенную фразу, вы можете использовать командлет Get-Command . Однако в нем не перечислен каждый командлет в PowerShell, поэтому вы используете некоторые конкретные фильтры. Вы можете использовать следующие команды:

 Get-Command -Name Get-Command -CommandType 

Первый командлет поможет вам найти командлет с определенной фразой, а второй — отфильтровать командлеты, выполняющие определенную функцию.

4] Поиск определенного файла

imge_12267.png

Если вам нужно найти определенный файл или каталог в определенном месте, вы можете использовать командлет Get-Item . Вы можете использовать его как

 Get-Item 

перечислить содержимое конкретного пути.

5] Прочитайте содержимое файла

imge_12280.png

Если вам нужно прочитать содержимое файла, вы можете использовать команду Get-Content как

 Get-Content 

6] Прочтите информацию обо всех службах на компьютере .

imge_12293.png

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

 Start-Service Стоп-Service Suspend-Service Resume-Service Рестарт-Сервис 

7] Читайте информацию обо всех процессах на компьютере

imge_12305.png

Подобно командлету Get-Service, вы можете использовать командлет Get-Process , чтобы вывести список всех процессов, запущенных на вашем компьютере.В качестве альтернативы вы можете использовать следующие связанные командлеты для выполнения соответствующих функций:

 Запуск процесса Stop-Process Служба ожидания 

8] Настройка политики выполнения

Хотя в PowerShell поддерживается создание и выполнение сценариев, существуют ограничения для каждого из них в рамках некоторых мер безопасности. Вы можете переключить уровень безопасности на любой из 4 уровней. Вы можете использовать командлет Set-ExecutionPolicy , а затем любой из уровней безопасности, указанных в

 Set-ExecutionPolicy Неограниченный Set-ExecutionPolicy Все подписано Set-ExecutionPolicy Удаленная подпись Set-ExecutionPolicy Restricted 

Здесь политики сверху вниз варьируются от самого низкого до самого высокого уровня безопасности.

9] Скопируйте файл или каталог

imge_12320.png

Пользователь может использовать командлет Copy-Item для копирования одного файла или каталога в другое место назначения. Синтаксис этого командлета

 Copy-Item "E:  TWCTest.txt" -Destination "D: " 

10] Удалить файл или каталог

imge_12335.png

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

 Remove-Item "E:  TWCTest.txt" 

У вас есть другие полезные командлеты, которыми вы можете поделиться со всеми нами? Не стесняйтесь записывать их в поле для комментариев ниже.

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

Ранее в материале «Основы Windows PowerShell» мы с Вами узнали, что вообще такое PowerShell, а также рассмотрели основные его возможности. Поэтому данная статья подразумевает, что Вы уже имеете представление о том, что такое Windows PowerShell и сейчас мы не будем заострять на этом внимание, а сразу перейдем к рассмотрению командлетов.

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

      Get-Command -CommandType cmdlet    

Если Вы, выполнив вышеуказанную команду у себя на компьютере, не нашли командлет из представленного ниже списка (или тот который Вам нужен), то скорей всего у Вас не установлен необходимый модуль. Модули PowerShell для соответствующих ролей и компонентов сервера устанавливаются автоматически одновременно с ними. В случае если Вы хотите воспользоваться данными модулями на системе без установленных ролей и компонентов, то Вы всегда можете установить соответствующие «Средства удаленного администрирования сервера», которые добавляют не только оснастки управления, но и необходимые командлеты. Например, для того чтобы администрировать Active Directory с помощью Windows PowerShell на компьютере, который не является контроллером домена, необходимо установить модуль Active Directory для Windows PowerShell (RSAT-AD-PowerShell).

Примечание!Данный справочник составлен на основе командлетов версии PowerShell 5.0 в операционной системе Windows Server 2016.

Содержание

Полезные командлеты 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 — возвращает список команд, введенных в ходе текущей сессии.

Работа с переменными

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

  • Get-Variable – выводит список переменных и их значения (или одну указанную переменную);
  • New-Variable – создает новую переменную;
  • Set-Variable – задает значение переменной. Если переменная с указанным именем не существует, то она будет создана;
  • Clear-Variable — удаляет значение переменной;
  • Remove-Variable — удаляет переменную и ее значение.

Форматирование в Windows PowerShell

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

  • Format-List – вывод результата команды в формате списка свойств, где на каждой новой строке отдельное свойство;
  • Format-Table — вывод результата команды в виде таблицы;
  • Format-Wide — вывод результата команды в виде широкой таблицы, в которой отображается только одно свойство каждого объекта;
  • Format-Custom – в данном случае форматирование вывода происходит с использованием пользовательского представления.

Импорт и экспорт

PowerShell позволяет импортировать и экспортировать данные в разных распространенных форматах, например, CSV или XML, а также перенаправлять вывод результата работы команды во внешний файл или на принтер.

  • Export-Csv – экспорт данных в формат CSV;
  • Import-Csv – импортирует данные из CSV файла;
  • Export-Clixml — экспорт данных в формат XML;
  • Import-Clixml — импортирует файл CLIXML и создает соответствующие объекты в оболочке Windows PowerShell;
  • Out-File — посылает вывод результата работы командлета во внешний файл (например, в TXT);
  • Out-Printer — вывод результата работы команды на принтер;
  • Import-Module — добавляет модули в текущей сессии.

Работа с сетью в Windows PowerShell

Для администрирования сети в Windows PowerShell существуют такие командлеты как:

  • Disable-NetAdapter – командлет отключает сетевой адаптер;
  • Enable-NetAdapter – данный командлет включает сетевой адаптер;
  • Rename-NetAdapter — переименовывает сетевой адаптер;
  • Restart-NetAdapter — перезапускает сетевой адаптер;
  • Get-NetIPAddress – выводит информацию о конфигурации IP-адреса;
  • Set-NetIPAddress — изменяет конфигурацию IP-адреса;
  • New-NetIPAddress — создает и настраивает IP-адрес;
  • Remove-NetIPAddress — удаляет IP-адрес и его конфигурацию;
  • Get-NetRoute — выводит таблицу маршрутизации IP;
  • Set-NetRoute — изменяет таблицу маршрутизации IP;
  • New-NetRoute — создает запись в таблице маршрутизации IP;
  • Remove-NetRoute — удаляет одну или несколько записей (IP маршрутов) из таблицы маршрутизации IP;
  • Get-NetIPv4Protocol — выводит информацию о конфигурации протокола IPv4;
  • Get-NetIPv6Protocol — выводит информацию о конфигурации протокола IPv6;
  • Get-NetIPInterface — выводит информацию о свойствах интерфейса IP;
  • Get-NetTCPSetting — показывает информацию о настройках и конфигурации TCP;
  • Test-Connection – командлет посылает ICMP пакеты к одному или нескольким компьютерам, т.е. «пингует» компьютеры.

Работа с элементами

В Windows PowerShell есть командлеты, которые умеют работать с элементами, под элементами здесь можно понимать: файлы, папки, ключи реестра и так далее.

  • Clear-Item — очищает содержимое элемента, но не удаляет сам элемент;
  • Copy-Item – копирует элемент;
  • Get-Item — получает элемент в указанном месте;
  • Invoke-Item — выполняет действие по умолчанию над указанным элементом;
  • Move-Item – перемещает элемент;
  • New-Item – создает новый элемент;
  • Remove-Item – удаляет указанные элементы;
  • Rename-Item — переименовывает элемент в пространстве имен поставщика Windows PowerShell;
  • Set-Item — изменяет элемент;
  • Get-ChildItem — возвращает элементы и дочерние элементы в одном или нескольких определенных местах;
  • Get-Location – выводит информацию о текущем местонахождении.

Командлеты для работы с Active Directory (AD)

Windows PowerShell, конечно же, позволяет работать со службой каталогов Active Directory. Для этих целей существует немало командлетов, вот некоторые из них:

  • New-ADUser – создание нового пользователя в Active Directory;
  • Get-ADUser – выводит информацию о пользователях Active Directory;
  • Set-ADUser — изменяет пользователя Active Directory;
  • Remove-ADUser — удаляет пользователя Active Directory;
  • New-ADGroup – командлет создает группу в Active Directory;
  • Get-ADGroup – выводит информацию о группе или выполняет поиск, чтобы получить несколько групп из Active Directory;
  • Set-ADGroup – командлет изменяет группу в Active Directory;
  • Remove-ADGroup — удаление группы в Active Directory;
  • Add-ADGroupMember — командлет добавляет учетные записи пользователей, компьютеров или групп в качестве новых членов группы Active Directory;
  • Get-ADGroupMember — выводит информацию о членах группы Active Directory;
  • Remove-ADGroupMember — удаление элементов из группы Active Directory;
  • Set-ADAccountPassword — сброс пароля учетной записи Active Directory;
  • Disable-ADAccount — отключает учетную запись Active Directory.
  • Enable-ADAccount — включает учетную запись Active Directory;
  • Unlock-ADAccoun — разблокирует учетную запись Active Directory;
  • New-ADComputer — создание новой учетной записи компьютера в Active Directory;
  • Get-ADComputer — выводит информацию об одном или нескольких компьютерах в Active Directory;
  • Set-ADComputer — изменение учетной записи компьютера в Active Directory;
  • Remove-ADComputer — удаление компьютера из Active Directory.

Работа с Hyper-V

Для работы с Hyper-V в Windows PowerShell существует много командлетов, вот небольшой перечень:

  • New-VM — создание новой виртуальной машины;
  • Set-VM — настройка виртуальной машины;
  • Start-VM — запуск виртуальной машины;
  • Stop-VM — закрытие, выключение или сохранение виртуальной машины;
  • Import-VM — импорт виртуальной машины из файла;
  • Move-VM — перемещение виртуальной машины на новый Hyper-V хост;
  • Remove-VM — удаление виртуальной машины;
  • Rename-VM — переименование виртуальной машины;
  • New-VHD — создание одного или нескольких новых виртуальных жестких дисков;
  • Set-VHD – настройка виртуального жесткого диска;
  • Test-VHD — тестирование виртуального жесткого диска на предмет обнаружения проблем, которые сделали бы его непригодным для использования;
  • Add-VMDvdDrive — добавляет DVD диск к виртуальной машине;
  • Remove-VMDvdDrive — удаляет DVD-диск из виртуальной машины;
  • Add-VMHardDiskDrive — добавляет жесткий диск к виртуальной машине;
  • Remove-VMHardDiskDrive — удаляет один или несколько виртуальных жестких дисков (VHD) из виртуальной машины;
  • Add-VMNetworkAdapter — добавляет виртуальный сетевой адаптер на виртуальной машине;
  • Remove-VMNetworkAdapter — удаляет один или несколько виртуальных сетевых адаптеров из виртуальной машины;
  • Copy-VMFile — копирование файлов на виртуальную машину;
  • Get-VMVideo – выводит информацию о настройках видео для виртуальных машин;
  • Move-VMStorage — перемещение хранилища виртуальной машины.

Работа с фоновыми заданиями

В Windows PowerShell есть возможность запускать задачи в фоновом режиме, для того чтобы, не дожидаясь окончания работы команды (для случаев, когда задача выполняется долго), продолжать работать в текущей сессии. Для работы с фоновыми заданиями в PowerShell есть следующие командлеты:

  • Start-Job – запустить фоновую задачу;
  • Stop-Job – остановить фоновую задачу
  • Get-Job – посмотреть список фоновых задач;
  • Receive-Job – посмотреть результат выполнения фоновой задачи;
  • Remove-Job – удалить фоновую задачу;
  • Wait-Job – перевести фоновую задачу на передний план, для того чтобы дожидаться ее окончания.

Работа с объектами

Так как PowerShell работает с объектами, он позволяет выполнять некие действия над этими объектами, например:

  • Measure-Object – командлет позволяет рассчитывать на основе свойств объектов такие числовые агрегирующие параметры как: минимальное, максимальное, среднее значение, сумму и количество. Например, Вы хотите узнать максимальный или средний размер файла в определенном каталоге, или просто узнать количество файлов (запущенных процессов, служб и так далее);
  • Select-Object – с помощью данного командлета можно выбрать определенные объекты или свойства этих объектов, например Вы хотите выводить только название файла и его размер;
  • Sort-Object — сортирует объекты по значениям свойств;
  • Where-Object – командлет для того чтобы ставить условие для выборки объектов на основе значений их свойств;
  • Group-Object – группирует объекты, которые содержат одинаковое значение для заданных свойств;
  • ForEach-Object – перебор объектов с целью выполнения определенной операции над каждым из этих объектов.

Командлеты PowerShell для удаленного управления

С помощью Windows PowerShell можно выполнять команды не только на локальном компьютере, но и на одном или даже на нескольких удаленных компьютерах.

  • Enter-PSSession — запускает интерактивный сеанс с удаленным компьютером;
  • Exit-PSSession — завершает интерактивный сеанс с удаленным компьютером;
  • New-PSSession — создает постоянное подключение к локальному или удаленному компьютеру;
  • Remove-PSSession — закрывает один или несколько сеансов Windows PowerShell;
  • Disconnect-PSSession — отсоединяется от сеанса;
  • Connect-PSSession — подключается к отключенным сеансам;
  • Get-PSSession — получает сеансы Windows PowerShell на локальных и удаленных компьютерах;
  • Invoke-Command — выполняет команды на локальном и удаленных компьютерах.

Работа со службами и процессами

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

  • Get-Process – выводит информацию о запущенных процессах на компьютере;
  • Start-Process – запускает один или несколько процессов на компьютере;
  • Stop-Process — останавливает один или несколько запущенных процессов;
  • Get-Service – выводит информацию о службах;
  • Restart-Service – перезапускает службу;
  • Start-Service – запускает службу;
  • Stop-Service — останавливает службу;
  • Suspend-Service – приостанавливает работу службы;
  • Set-Service – с помощью данного командлета можно изменить свойства службы, например, описание, отображаемое имя и режим запуска. Также его можно использовать для запуска, остановки или приостановки службы.

Работа с компьютером

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

  • Restart-Computer – командлет перезапускает операционную систему (перезагружает компьютер);
  • Stop-Computer – выключает компьютер;
  • Rename-Computer – переименовывает компьютер;
  • Checkpoint-Computer — создает точку восстановления системы на локальном компьютере;
  • Restore-Computer — запускает восстановление системы на локальном компьютере;
  • Disable-ComputerRestore — отключает функцию восстановления системы на указанном диске файловой системы;
  • Enable-ComputerRestore — включает функцию восстановления системы на указанном диске файловой системы;
  • Remove-Computer — удаляет локальный компьютер из домена;
  • Get-EventLog – выводит информацию о событиях в журнале событий, или список журналов событий на локальном или удаленном компьютере;
  • Clear-EventLog — удаляет записи из указанных журналов событий.

Работа с контентом

Для управления контентом, например, текстом в файле в Windows PowerShell существуют специальные командлеты, такие как:

  • Get-Content – получает содержимое элемента (например, считывает файл);
  • Add-Content – добавляет содержимое в заданные элементы, например, текст в файл;
  • Clear-Content — удаляет содержимое элемента, но не удаляет сам элемент;
  • Set-Content — записывает или заменяет содержимое в элемент с новым содержанием.

Другие командлеты Windows PowerShell

Также хотелось бы выделить следующие командлеты Windows PowerShell, которые наверняка Вам понадобятся и будут полезны.

  • Get-ExecutionPolicy – с помощью данного командлета можно узнать действующую политику выполнения Windows PowerShell для текущего сеанса;
  • Set-ExecutionPolicy – командлет изменяет политику выполнения Windows PowerShell;
  • Write-Host – выводит информацию на экран (пишет текст);
  • Read-Host – считывает строку ввода из консоли;
  • Write-Warning – выводит предупреждающее сообщение;
  • Write-Error – командлет объявляет ошибку и выводит ее в поток ошибок;
  • Get-Date – возвращает текущую дату и время;
  • Set-Date – командлет изменяет системную дату и время на компьютере.

Вот мы с Вами и рассмотрели полезные и часто используемые командлеты Windows PowerShell, надеюсь, этот справочник будет Вам полезен, удачи!

Используемые источники:

  • https://tproger.ru/translations/powershell-tutorial/
  • https://techarks.ru/windows/powershell/10-osnovnyh-komand-powershell-kotorye-dolzhen-znat-kazhdyj-polzovatel-windows-10/
  • https://info-comp.ru/sisadminst/555-directory-windows-powershell-cmdlets.html
Шпаргалка по PowerShell Команды операторы и многое другое
Шпаргалка по PowerShell Команды операторы и многое другое

Шпаргалка по PowerShell — это версия языка командной строки Windows, которая помогает вам легко выполнять и автоматизировать критически важные задачи в ваших системах. Но как выполнять эти задачи и максимально использовать PowerShell в своей системе Windows?

Системный администратор

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

Начнем с краткого введения в команды Windows 10 PowerShell.

Основы PowerShell

PowerShell — это кроссплатформенное и широко используемое решение для автоматизации задач, сочетающее в себе возможности оболочки командной строки, языка сценариев и структуры управления конфигурацией. PowerShell можно запускать на операционных системах Windows, Linux и macOS. В отличие от других доступных оболочек, которые только принимают и возвращают данные, PowerShell принимает и возвращает объекты .NET.

Эта оболочка имеет следующие возможности.

  • Удобная история командной строки
  • Широкие возможности, такие как завершение табуляции и предсказание команд
  • Псевдонимы команд и параметров
  • Система изменения команд
  • Встроенная справочная система, подобная Unix man pages

Учитывая возможности любого языка сценариев, вы можете использовать PowerShell для автоматизации процессов и задач управления системой. Он позволяет создавать, тестировать и развертывать решения в средах CI/CD.

PowerShell построен на базе .NET Common Language Runtime (CLR), что означает, что все входные и выходные данные являются объектами .NET. Вам не придется разбирать текстовый вывод, чтобы получить из него информацию.

Язык сценариев PowerShell обладает следующими возможностями.

  • Функции, классы, объекты и модули
  • Простая система форматирования для обеспечения четкого вывода данных для повышения удобочитаемости
  • Встроенная поддержка различных форматов данных, таких как CSV, JSON и XML
  • Система типов для создания динамических типов

Теперь перейдем к некоторым полезным командам PowerShell.

Шпаргалка PowerShell по командам

Командлеты
Cmdlets — это внутренние команды PowerShell. Эти команды возвращают один или несколько объектов в конвейер, в конце которого мы упоминаем некоторые свойства объектов в следующей таблице, чтобы увидеть их значения, отображаемые на экране.

Команда Описание
Get-Help
Эта команда позволяет получить поддержку с помощью PowerShell.
Get-PSdrive
Эта команда предлагает вам список доступных PSDrives, таких как c, env, hklm, hkcu, alias и т.д.
Get-ChildItem
В любом реестре дочерние ключи — это подключи текущего ключа. Чтобы получить необходимые сведения, можно воспользоваться следующей командой.
Get-ChildItem -recurse
Выполните эту команду, чтобы рекурсивно перечислить все дочерние элементы текущего PSdrive, папки или ключа реестра.
Get-ChildItem -rec -force
Используйте эту команду для включения скрытых папок (каталогов).
(Get-ChildItem).name or Get-ChildItem -name
Выполните любую из этих команд, чтобы получить список имен файлов и каталогов в текущей папке.
(Get-ChildItem).count 
Используйте эту команду, чтобы получить количество записей в коллекции объектов, возвращенных командой Get-Children.

PSdrives

PSdrives — это коллекция объектов, сгруппированных вместе, чтобы к ним можно было получить доступ как к диску файловой системы. PSprovider» выполняет эту группировку.

По умолчанию сеанс PS может обращаться к нескольким PSdrives, включая c:, env:, alias: и HKLM:, где c: означает обычный диск c Windows; env: — это пространство переменных среды Windows; alias: — это коллекция псевдонимов команд; а HKLM — это ветка в реестре.

При любом сеансе PS пользователь попадает в свою домашнюю папку. Если вы хотите перейти из сеанса PS на другой диск PSdrive и получить информацию с этого диска, воспользуйтесь следующими командами:

Команды Описание
Switching to env-
Символ подсказки изменится на «ENV:>». Установите env, выполнив следующую команду:

Set-Location env-
Env:> Get-Childitem
Эта команда предоставит вам все переменные окружения.
Env:> Get-Childitem userprofile
Используйте эту команду, чтобы получить переменные окружения «userprofile».
Env:> Set-Location alias:
Выполните следующую команду, чтобы изменить символ подсказки на » Alias».
Alias:> Get-Childitem
Выполните эту команду, чтобы получить все дочерние элементы всех псевдонимов.
Alias:> Set-Location C:
Используйте эту команду, чтобы снова получить приглашение «C:/>», вернувшись к диску по умолчанию.
C:Usersuser_name>$alias:ls
Выполните эту команду, чтобы узнать, что означает псевдоним «ls».

Конвейеры

Cmdlets использует конвейеры для передачи объектов, но не потоков символов, как Unix. Символ конвейера — | (ASCII 124), за которым следует команда, обрабатывающая вывод, проходящий через конвейер. Конвейер состоит из следующих трех этапов.

Get-ChildItem *.txt | Where-Object length -lt 1000 | Sort-Object length

В следующей таблице приведены некоторые из основных команд конвейеров:

Команда Описание
(Get-Item /Users/praashibansal/Desktop).lastwritetime.year
Легко устанавливает значение свойства ‘lastwritetime.year’ на текущую дату и время, не влияя на содержимое файла.
(Get-ChildItem data.txt.rtf -name).name # -> null
Предоставляет пустой результат
"data.txt.rtf" | Rename-Item -NewName "data_new.txt.rtf"
Изменяет старые имена файлов и расширения файлов на новые
Get-ChildItem data.txt | Rename-Item -new {$_.name}
Тривиальная команда переименования, вызывающая автоматическую переменную
Get-ChildItem data.txt.rtf -name | Rename-Item -new {$_.name}
Если у передаваемого объекта $_ нет свойства (name), вы получите ошибку, так как параметр $_.name является null
Get-ChildItem | Select-Object basename | Sort-Object *
Отображает список имен всех файлов, присутствующих в текущей папке, отсортированных в алфавитном порядке.
Move-Item *.txt subdirectory
Перемещает все файлы в подкаталог папки
Get-ChildItem *.txt | Move-Item ..
Выдает сообщение об ошибке, что Move-Item не имеет входа

Alias (Алиас)

Cmdlets поддерживают несколько псевдонимов. В следующей таблице приведены некоторые псевдонимы и их описания:

Команда Описание
Add-Content
Добавляет значение к файлу
Get-Content
Поиск содержимого файла в массиве
Set-Location
Изменение папки, ключа или диска PS
Clear-Host
Очищает консоль
Remove-Item
Удаление файлов
Get-ChildItem -Path .
Списки папок, ключей или дочерних элементов PSDrive
Write-Output
Отправляет массив в консоль, конвейер или перенаправляет его в файл
Foreach-Object
Обход каждого объекта в конвейере
Format-Table
Форматирует таблицу с выбранными свойствами для каждого объекта в каждом столбце
Format-List
Форматирует свойства процесса по имени
Get-Alias
Обеспечивает псевдоним командлета
Get-Command
Предоставляет вам команды только из текущей сессии
Get-Member
Извлечение всех членов объекта
Get-ItemProperty .data.txt | Format-List
Предоставляет свойства указанного элемента
Get-ItemPropertyValue -Path '.data.txt'
 -Name LastWriteTime
Получает текущее значение для указанного свойства при использовании параметра name
Get-Variable m*
Находит имена переменных сеансов
New-Item -Path . -Name "testfile1.txt" -ItemType
 "file" -Value "This is a text string."
Создает новый файл, каталог, символическую ссылку, ключ реестра или запись реестра.
Get-Process
Выдает полный список всех запущенных процессов
Get-Location
Предоставляет местоположение текущего каталога или ключа реестра
Rename-Item -Path “old_name” -NewName “new_name”
Переименовывает старое имя элемента в новое имя
Remove-Item .testfile1.txt
Удаляет указанный каталог, файлы или ключи реестра
Remove-Variable 
Удаляет указанную переменную
Start-Sleep
Приостанавливает деятельность на определенный период времени

Операторы

Арифметические операторы

Оператор Описание Пример
+ Складывает целые числа; объединяет 6 + 2
строки, массивы и хэш-таблицы. «file» + «name»

@(1, «one») + @(2.0, «two»)

@{«one» = 1} + @{«two» = 2}

+ Делает число из объекта 123
Вычитание одного значения из другого 6 — 2
Вычисляет противоположное число — -6
(Get-Date).AddDays(-1)
* Умножение чисел или копирование строк и массивов заданное количество раз 6 * 2
@(«!») * 4
«!» * 3
/ Делит два значения 6 / 2
% Modulus — возвращает остаток от операции деления 7 % 2
-band Побитовое И 5 -band 3
-bnot Побитовое НЕ -bnot 5
-bor Побитовое ИЛИ 5 -bor 0x03
-bxor Побитовое XOR 5 -bxor 3
-shl Сдвигает биты влево 102 -shl 2
-shr Сдвигает биты вправо 102 -shr 2

Приоритет оператора

Приоритет Оператор Описание
1 () Круглые скобки
2 Для отрицательного числа или унарного оператора
3 *, /, % Для умножения и деления
4 +,- Для сложения и вычитания
5 -band, -bnot, -bor, -bxor, -shr, and -shl Для побитовых операций

Операторы присваивания

Оператор Описание
= Устанавливает значение переменной на указанное значение
+= Увеличивает значение переменной на указанное значение или добавляет указанное значение к существующему значению
-= Уменьшает значение переменной на заданную величину
*= Умножает значение переменной на указанное значение или добавляет указанное значение к существующему значению
/= Делит значение переменной на заданное значение
%= Делит значение переменной на заданное значение, а затем присваивает переменной остаток (модуль).
++ Увеличивает значение переменной, присваиваемого свойства или элемента массива на 1.
Уменьшает значение переменной, присваиваемого свойства или элемента массива на 1.

Операторы сравнения

Тип Оператор Сравнительный тест
Равенство -eq равно
-ne не равно
-gt больше, чем
-ge больше или равно
-lt меньше чем
-le меньше чем или равно
Соответствие -like строка соответствует шаблону подстановки
-notlike строка не соответствует шаблону
-match строка соответствует regex-шаблону
-notmatch строка не соответствует regex-шаблону
Замена -replace заменяет строки, соответствующие шаблону regex
Сдерживание -contains коллекция содержит значение
-notcontains коллекция не содержит значения
-in значение находится в коллекции
-notin значение отсутствует в коллекции
Тип -is оба объекта имеют одинаковый тип
-isnot объекты разного типа

Логические операторы

Оператор Описание Пример
-and Логическое И. TRUE, когда оба утверждения истинны. (1 -eq 1) -and (1 -eq 2)

FALSE

-or Логическое ИЛИ. TRUE, когда любое из утверждений TRUE. (1 -eq 1) -or (1 -eq 2)

TRUE

-xor Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ. ИСТИНА, когда только одно утверждение является ИСТИНОЙ. (1 -eq 1) -xor (2 -eq 2)

FALSE

-not Логическое не. Отрицает утверждение, которое следует за ним. -not (1 -eq 1)

FLASE

! То же, что и -нет !(1 -eq 1)

FALSE

Оператор перенаправления

Оператор Описание Синтаксис
> Отправить указанный поток в файл n>
>> Добавить указанный поток в файл n>>
>&1 Перенаправляет указанный поток на поток Success n>&1

Операторы типа

Оператор Описание Пример
-isNot Возвращает TRUE, если входные данные не являются экземпляром указанного.NET типа. (get-date) -isNot [DateTime]

FALSE

-as Преобразует входные данные в указанный тип .NET. «5/7/07» -as [DateTime]

Monday, May 7, 2007 00:00:00

Другие операторы

Оператор Описание
() Оператор группировки Позволяет переопределить старшинство операторов в выражениях
&() Оператор подвыражения Выдает результат одного или нескольких утверждений
@( ) Оператор подвыражения массива Возвращает результаты одного или нескольких операторов в виде массивов.
& Фоновый оператор Конвейер перед & выполняется этой командой в задании Powershell.
[] Cast оператор Преобразует объекты к определенному типу.

Регулярные выражения

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

Метод Чувствительность к случаю
Select-String use -CaseSensitive switch
switch statement use the -casesensitive option
operators prefix with ‘c’ (-cmatch, -csplit, or -creplace)

Литералы символов

Регулярное выражение может быть литеральным символом или строкой.

Группы символов

Они позволяют сопоставить любое количество символов за один раз, в то время как [^character group] сопоставляет только символы, не входящие в группу.

Диапазон символов

Шаблон также может быть диапазоном символов. Символы могут быть алфавитными [A-Z], цифровыми [0-9] или даже [ -~] (все печатаемые символы) в формате ASCII.

Числа

Класс символов d будет соответствовать любой десятичной цифре. И наоборот, D будет соответствовать любой недесятичной цифре.

Словесный символ

Класс символов w будет соответствовать любому символу слова [a-zA-Z_0-9]. Чтобы подобрать любой несловосочетаемый символ, используйте W.

Подстановочный знак

Точка (.) является символом подстановки в регулярных выражениях. Он будет соответствовать любому символу, кроме новой строки (n).

Пробел

Пробельные символы сопоставляются с помощью класса символов s. Любой не пробельный символ сопоставляется с помощью S. Буквальные символы пробела ‘ ‘ также могут быть использованы.

Экранирование символов

Обратная косая черта () используется для экранирования символов, чтобы механизм регулярных выражений не разбирал их.

Следующие символы зарезервированы: []().^$|?*+{}.

Подстановка в регулярном выражении.

Регулярные выражения с оператором -replace позволяют динамически заменять текст с помощью захваченного текста.

<input> -replace <original>, <substitute>

Управление потоком

ForEach-Object
ForEach-Object — это командлет, который позволяет выполнять итерации по элементам в конвейере, например, с помощью однострочных команд PowerShell. ForEach-Object будет передавать объекты по конвейеру.

Хотя параметр Module команды Get-Command принимает несколько значений, которые являются строками, он будет принимать их только через конвейерный ввод с помощью имени свойства или ввода параметра.

Если вы хотите передать две строки по значению в Get-Command для использования с параметром Module, используйте команду ForEach-Object:

$ComputerName = 'DC01', 'WEB01'

foreach ($Computer in $ComputerName) {

Get-ADComputer -Identity $Computer

}

For

Цикл «for» выполняет итерации, пока заданное условие истинно.

Например:

for ($i = 1; $i -lt 5; $i++) {

Write-Output "Sleeping for $i seconds"

Start-Sleep -Seconds $i

}

Do

В PowerShell существует два различных цикла «do». Do Until выполняется, пока заданное условие ложно.

Пример 1:

$number = Get-Random -Minimum 1 -Maximum 10

do {

$guess = Read-Host -Prompt "What's your guess?"

if ($guess -lt $number) {

Write-Output 'Too low!'

}

elseif ($guess -gt $number) {

Write-Output 'Too high!'

}

}

until ($guess -eq $number)

Пример 2:

$number = Get-Random -Minimum 1 -Maximum 10

do {

$guess = Read-Host -Prompt "What's your guess?"

if ($guess -lt $number) {

Write-Output 'Too low!'

} elseif ($guess -gt $number) {

Write-Output 'Too high!'

}

}

while ($guess -ne $number)

While

Подобно циклу Do While, цикл While выполняется до тех пор, пока заданное условие истинно. Однако разница заключается в том, что цикл While оценивает условие в верхней части цикла перед выполнением любого кода. Таким образом, он не выполняется, если условие оценивается как ложное.

Например:

$date = Get-Date -Date 'November 22'

while ($date.DayOfWeek -ne 'Thursday') {

$date = $date.AddDays(1)

}

Write-Output $date

Переменные

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

Переменные, созданные пользователем: Они создаются и поддерживаются пользователем. Переменные, которые вы создаете в командной строке PowerShell, будут существовать только до тех пор, пока открыто окно PowerShell. Когда вы закрываете окно PowerShell, эти переменные удаляются. Если вы хотите сохранить переменную, вам необходимо добавить ее в свой профиль PowerShell. Вы можете создавать переменные и объявлять их с тремя различными диапазонами: глобальным, скриптовым или локальным.

Автоматические переменные: Эти переменные хранят состояние PowerShell и создаются PowerShell. Только PowerShell может изменять их значения по мере необходимости для поддержания точности. Пользователи не могут изменять значение этих переменных. Например, переменная $PSHOME будет хранить путь к директории установки PowerShell.

Переменные предпочтений: Эти переменные хранят предпочтения пользователя для PowerShell и создаются PowerShell. Эти переменные заполнены значениями по умолчанию и могут быть изменены пользователями. Например, переменная $MaximumHistoryCount задает максимальное количество записей в истории сеансов.

Чтобы создать новую переменную, необходимо использовать оператор присваивания и присвоить переменной значение. Объявлять переменную перед ее использованием не нужно. Значение по умолчанию для всех переменных — $null.

Например:

$MyVariable = 1, 2, 3

$MyVariable

Шпаргалка по PowerShell

Функция

Именование функции
Для именования функции используйте имя регистра Паскаля с утвержденным глаголом и существительным в единственном числе. Список утвержденных глаголов можно получить, выполнив Get-Verb:

Get-Verb | Sort-Object -Property Verb

Шпаргалка по PowerShell

Создание простой функции

Для создания простой функции используйте ключевое слово function, за которым следует имя функции. Затем используйте открытую и закрывающую фигурные скобки. Функция будет выполнять код, содержащийся в этих фигурных скобках.

Например:

function Get-Version {

$PSVersionTable.PSVersion

}

Шпаргалка по PowerShell

Работа с модулями

Модуль — это пакет, содержащий объекты PowerShell, такие как команды, провайдеры, функции, рабочие процессы, значения переменных и псевдонимы. Элементы пакета можно реализовать в сценарии PowerShell, скомпилированной библиотеке DLL или и в том, и в другом. PowerShell автоматически импортирует модули при первом запуске любой команды в установленном модуле. Вы можете использовать команды в модуле без настройки или конфигурации профиля.

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

Установка модуля
Если вы получили модуль в виде папки, установите его перед использованием в командной строке PowerShell. Некоторые модули являются предустановленными. Вы можете использовать следующую команду для создания каталога Modules для текущего пользователя:

New-Item -Type Directory -Path $HOMEDocumentsPowerShellModules

Шпаргалка по PowerShell

Скопируйте всю папку модуля в каталог Modules. Для копирования папки можно использовать любой метод, включая проводник Windows, Cmd.exe и PowerShell.

Поиск установленных модулей
Выполните следующие действия, чтобы найти модули, установленные в местоположении модулей по умолчанию (не импортированные).

Get-Module -ListAvailable

Шпаргалка по PowerShell

Поиск команд в модуле

Выполните следующую команду, чтобы найти команды модуля:

Get-Command -Module <module-name>

Get-Command -Module Microsoft.PowerShell.Archive

Шпаргалка по PowerShell

Импортирование модуля

Выполните следующую команду с нужным именем модуля:

Import-Module <module-name>

Удаление имени модуля

Вы можете выполнить следующую команду с нужным именем модуля:

Remove-Module <module-name>

Просмотр расположения модулей по умолчанию

Используйте следующую команду для просмотра расположения модулей по умолчанию:

$Env:PSModulePath

Добавление местоположения модуля по умолчанию

Вы можете использовать следующий формат команды:

$Env:PSModulePath = $Env:PSModulePath + ";<path>"

Добавление местоположения модуля по умолчанию в Linux или macOS

Используйте следующее, чтобы выполнить ту же команду, что и выше, только в Linux или macOS:

$Env:PSModulePath += ":<path>"

Хеш-таблицы

Хеш-таблица — это сложная структура данных для хранения данных в виде пар ключ-значение. Мы также называем хэш-таблицу словарем или ассоциативным массивом. Чтобы понять, что такое хэш-таблица, рассмотрим серию IP-адресов и соответствующие имена компьютеров. В хэш-таблице эти данные хранятся в виде пар ключ-значение, где IP-адреса обозначают ключи, а имена компьютеров — соответствующие им значения.

Синтаксис хэш-таблицы выглядит следующим образом:

@{ <name> = <value>; [<name> = <value> ] ...}

Синтаксис упорядоченного словаря выглядит следующим образом:

[ordered]@{ <name> = <value>; [<name> = <value> ] ...}

Создание хэш-таблиц

Если вы хотите создать хэш-таблицу, выполните следующие действия:

  • Начните хэш-таблицу со знака at (@) и заключите ее в фигурные скобки ({}).
  • Хэш-таблица должна содержать хотя бы одну пару ключ-значение, поэтому вводите данные после создания хэш-таблицы.
  • Отделите ключ от его значения с помощью знака равенства (=).
  • Разделяйте пары ключ/значение в хэш-таблице точкой с запятой (;).
  • Заключите пробел между ключами в кавычки. Значения должны быть допустимыми выражениями PowerShell. Также заключайте строки в кавычки, даже если между ними нет пробелов.
  • Сохраните хэш-таблицу как переменную, чтобы эффективно управлять ею.
  • При назначении упорядоченной хэш-таблицы переменной поместите атрибут [ordered] перед символом @. Если поместить его перед именем переменной, команда не выполнится.

Например:

$hash = @{}

$hash = @{ Number = 1; Shape = "Square"; Color = "Blue"}

[hashtable]$hash = [ordered]@{

Number = 1; Shape = "Square"; Color = "Blue"}

$hash

Добавление и удаление ключей и значений

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

$hash[«<key>»] = «<value>»

Например, вы можете добавить ключ «Time» со значением «Now» в хэш-таблицу с помощью следующего формата оператора:

$hash["Time"] = "Now"

или

$hash.Add("Time", "Now")

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

$hash.Remove("Time")

Асинхронная обработка событий

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

Команды PowerShell для обработки событий

Имя командлета обработки событий Описание
Register-ObjectEvent Этот командлет регистрирует подписку на события для событий, генерируемых объектами .NET
Register-WmiEvent Регистрирует подписку на события для событий, генерируемых объектами WMI
Register-EngineEvent Регистрирует подписку на события для событий, генерируемых самим PowerShell
Get-EventSubscriber Получает список зарегистрированных подписок на события в сессии
Unregister-Event Удаляет одну или несколько зарегистрированных подписок на события
Wait-Event Ожидает наступления события. Эта команда может ждать определенного события или любого события. Она также позволяет указать тайм-аут, ограничивающий время ожидания события. По умолчанию ожидание длится вечно.
Get-Event Получает ожидающие необработанные события из очереди событий
Remove-Event Удаляет ожидающее событие из очереди событий
New-Event Эта команда вызывается в сценарии, чтобы позволить сценарию добавлять свои собственные события в очередь событий

Шпаргалка по PowerShell: заключение

В итоге? Шпаргалка по PowerShell — это универсальный справочник по синтаксису и командам PowerShell. В этой шпаргалке по командам Windows PowerShell мы рассмотрели все основы, чтобы помочь даже новичкам сориентироваться в PowerShell.

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

Если вы готовитесь к предстоящему собеседованию, держите эту шпаргалку по PowerShell 5.0 под рукой для быстрого ознакомления с простыми примерами.

Хотите расширить свои знания о командной строке Windows?

Часто задаваемые вопросы

1. Как получить список команд PowerShell?
Вы можете использовать команду get-command.

2. Сколько существует команд PowerShell?
В PowerShell существует более 200 команд.

3. Как изучить PowerShell для начинающих?
Вы можете воспользоваться вводным руководством Microsoft по PowerShell. Оно содержит простой язык и простые примеры для лучшего понимания.

4. Является ли Windows PowerShell тем же самым, что и командная строка?
В следующей таблице приведены основные различия между PowerShell и командной строкой:

PowerShell Командная строка
Введен в 2006 году Введен в 1981 году
Работает как с пакетными командами, так и с командами PowerShell Работает только с пакетными командами
Позволяет создавать псевдонимы для команд или сценариев Не поддерживает создание псевдонимов команд
Позволяет передавать вывод команды другим командам. не позволяет передавать вывод команды другим командам.
Вывод осуществляется в виде объекта Вывод — просто текст
Можно выполнять последовательность команд в рамках сценария Требуется, чтобы одна команда завершилась раньше другой
Имеет библиотеки для программирования, так как построен на .net framework. Отсутствие библиотек программирования
Бесшовная интеграция с WMI Требуется внешний плагин для взаимодействия с WMI
Поддерживает системы Linux Не поддерживает системы Linux
Выполняет все типы программ Запускает только программы консольного типа

5. Как сделать командную строку по умолчанию вместо PowerShell?

Откройте Настройки > Персонализация > Панель задач. Теперь установите опцию «Заменить Command Prompt на Windows PowerShell» в меню, когда я нажимаю правой кнопкой мыши на кнопку «Пуск» или нажимаю клавиши Windows + X» в положение «Выкл».

Возможно вам так же будет интересно:

Скрипты Windows PowerShell для работы с Active Directory

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

Шпаргалка по командам Windows PowerShell

На ПК с Windows это можно сделать только двумя способами: с помощью CMD или PowerShell. Хотя CMD немного более популярен, чем PowerShell, он также менее мощный, поскольку его аналог позволяет выполнять гораздо больше операций, включая те, которые вы можете запускать через CMD. Можно сказать, что PowerShell сочетает в себе мощь старого CMD со сценариями и возможностями командлетов, предоставляя вам множество возможностей в отношении операций, которые вы можете выполнять с его помощью.

Однако огромное количество возможных операций, которые вы могли бы выполнить с помощью PowerShell, может напугать даже опытных пользователей, не говоря уже о тех, кто никогда раньше не слышал о CMD (не говоря уже о PowerShell). Но не волнуйтесь, мы постараемся научить вас нескольким простым трюкам, которые вы сможете реализовать с помощью PowerShell и, возможно, даже запомнить в долгосрочной перспективе. Хотя этот наш «ускоренный курс» не будет служить исчерпывающим руководством по PowerShell, мы надеемся, что он поможет вам сориентироваться в PowerShell, дав вам несколько указателей и объяснив ряд команд. Если готовы, приступим.

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

В отличие от других оболочек, которые могут принимать и возвращать только текст, PowerShell также может принимать и возвращать объекты.NET благодаря огромному количеству функций, которые он включает. Вот некоторые из наиболее важных функций PowerShell, связанных с оболочкой:

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

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

Учитывая, что PowerShell основан на.NET CLR (.NET Common Language Runtime), легко понять, почему все входные и выходные данные, с которыми работает PowerShell, являются объектами.NET. Кроме того, нет никакой необходимости анализировать вывод текста, чтобы PowerShell мог извлекать из него информацию. Среди функций сценариев PowerShell вы можете найти следующие:

  • Комплексная система форматирования, обеспечивающая чистый и простой вывод.
  • Создавайте динамические типы с помощью обширной системы типов.
  • Вы можете расширить возможности PowerShell с помощью классов, функций, модулей и скриптов.
  • Встроенная поддержка различных форматов данных, включая XML, JSON и CSV.

Если вас больше интересует управление и настройка корпоративной инфраструктуры с помощью кода, вы будете рады узнать, что PowerShell также предлагает вам эту возможность через свою структуру управления Desired State Configuration (DSC). Среди операций, которые можно легко выполнить с помощью DSC PowerShell, мы напоминаем вам:

  • Развертывайте различные схемы конфигурации, используя модели push или pull.
  • Создавайте собственные сценарии и декларативные конфигурации, которые можно использовать для повторяемых развертываний в своей среде.
  • Применяйте различные схемы конфигурации.
  • Отчет о дрейфе конфигурации

PowerShell имеет проприетарную командную строку, которая поставляется с проприетарным языком программирования, чем-то похожим на Perl. Обратите внимание, что вначале PowerShell был разработан, чтобы помочь пользователям управлять объектами на своих компьютерах, но, как вы можете догадаться, он прошел долгий путь и теперь используется для более обширных и сложных задач.

Например, вы можете использовать обширную рабочую среду PowerShell не только для выполнения различных операций по управлению системой, но и для их автоматизации, чтобы вам не приходилось время от времени выполнять утомительные, повторяющиеся задачи. Также очень важно отметить, что вы можете получить доступ к множеству ресурсов с помощью только одной программы (например, PowerShell), включая, но не ограничиваясь:

  • Инструментарий управления Windows
  • API.NET Framework
  • Командная строка
  • Модель компонентных объектов Windows
  • Команды PowerShell

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

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

Стоит отметить, что PowerShell является кроссплатформенным и имеет открытый исходный код, а это означает, что вы также можете использовать его в других системах, таких как Mac или Linux, без использования уловок и инструментов повышения совместимости, таких как Wine или Boot Camp.

Список основных команд PowerShell

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

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

Именно поэтому мы подготовили список основных команд, которые вы можете безопасно использовать в сеансах PowerShell, чтобы протестировать возможности этой мощной программы и посмотреть, какая из них именно что делает. В списке ниже представлены имена команд, их псевдонимы и краткое описание того, что делает каждая команда.

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

Название команды Псевдоним Описание
Добавить контент ac Позволяет добавлять содержимое (например, слова или данные) в файл
Добавить PSSnapIn asnp Помогает добавить несколько оснасток Windows PowerShell в
текущий сеанс
Clear-Content clc Очищает содержимое элемента без удаления самого элемента
Очистить историю clhy Удаляет все записи из истории команд
Очистить хост очистить Очищает отображение основной программы
Очистить хост cls Выполняет то же самое, что и clear
Очистить элемент cli Удаляет содержимое элемента, не удаляя сам элемент
Clear-ItemProperty clp Удаляет значение свойства без фактического удаления самого свойства
Clear-Variable clv Удаляет значение переменной
Сравнить объект сравнить Позволяет сравнить два набора объектов
Сравнить объект diff Выполняет те же действия, что и compare
Connect-PSSession cnsn Позволяет повторно подключиться к сеансам, от которых вы отключились
Convert-Path cvpa Позволяет преобразовать путь Windows PowerShell в путь поставщика Windows
PowerShell
Копировать элемент копия Помогает скопировать элемент из одного места в другое
Копировать элемент cp Выполняет то же самое, что и copy
Копировать элемент cpi Выполняет те же действия, что и copy и cp
Copy-ItemProperty cpp Позволяет скопировать значение и свойство из одного места в другое место
Disable-PSBreakpoint dbp Помогает отключить точки останова в текущей консоли
Disconnect-PSSession dnsn Отключает вас от текущего сеанса
Enable-PSBreakpoint ebp Позволяет включать точки останова в текущей консоли
Enter-PSSession etsn Помогает запустить интерактивный сеанс с удаленным устройством
Exit-PSSession exsn Завершает интерактивный сеанс с удаленным устройством
Экспорт-псевдоним эпал Позволяет экспортировать информацию о псевдонимах, которые в настоящее время определены
в выходной файл
Export-CSV epcsv Позволяет преобразовывать объекты в несколько строк, разделенных запятыми (CSV),
и экспортировать строки в документ CSV
Export-PSSession epsn Импортирует команды из другого сеанса и экспортирует их в модуль Windows PowerShell
ForEach-Object % Выполняет определенную операцию с каждым из элементов,
содержащихся в коллекции входных объектов
ForEach-Object foreach Выполняет то же самое, что и %
Пользовательский формат fc Помогает использовать настраиваемое представление для форматирования вывода
Список форматов fl Позволяет форматировать вывод как список свойств, где каждое свойство
помещается в новую строку
Формат-таблица футов Позволяет форматировать вывод в виде таблицы
Широкий формат fw Помогает форматировать объекты в виде широких таблиц, в которых отображается только одно свойство каждого объекта
Get-Alias ​​ гал Выбирает псевдонимы для текущего сеанса
Get-ChildItem директория Получает список всех файлов и папок на диске с файловой системой
Get-ChildItem gci Выполняет то же самое, что и dir
Get-ChildItem ls Выполняет те же функции, что и dir и gci
Get-Command gcm Получает список всех команд, которые вы можете использовать
Get-Content кот Отображает содержимое файла
Get-Content gc Выполняет то же самое, что и cat
Get-History ghy Получает список всех команд, введенных вами во время текущего сеанса
Get-History h Выполняет то же самое, что и ghy
Get-History история Выполняет те же действия, что и ghy и h
Get-Item gi Позволяет получать файлы и папки
Get-ItemProperty gp Получает свойства указанного вами элемента
Get-Job gjb Получает список всех фоновых заданий Windows PowerShell, которые
в данный момент выполняются в вашем сеансе
Get-Location gl Получает информацию о вашем текущем стеке местоположений или рабочем местоположении
Get-Location pwd Выполняет то же самое, что и gl
Get-Member gm Получает все свойства и методы указанных объектов
Get-Module gmo Получает список импортированных модулей или модулей, которые могут быть импортированы в текущий

сеанс

Get-Process GPS Получает список всех процессов, запущенных локально или на удаленном
компьютере
Get-Process ps Выполняет то же самое, что и gps
Get-PSBreakpoint gbp Получает все точки останова, установленные в текущем сеансе
Get-PSCallStack gcs Отображает текущий стек вызовов
Get-PSDrive гдр Извлекает диски в текущем сеансе
Get-PSSession gsn Получает список локальных и удаленных сеансов Windows PowerShell
Get-PSSnapIn gsnp Получает список всех оснасток Windows PowerShell на компьютере
Get-Service gsv Список всех служб на локальном или удаленном компьютере
Get-Unique гу Извлекает уникальные элементы из отсортированного списка
Get-Variable gv Отображает список всех переменных в текущей консоли
Get-WmiObject gwmi Получает экземпляры классов инструментария управления Windows (WMI) или информацию о доступных классах
Групповой объект группа Позволяет группировать объекты, содержащие одно и то же значение для указанных вами свойств
справка человек Отображает дополнительные сведения о командах Windows PowerShell и концепциях
Импорт псевдонима ipal Позволяет импортировать список псевдонимов из файла
Import-CSV ipcsv Создавайте настраиваемые объекты в виде таблиц, используя все элементы, содержащиеся
в файле CSV
Модуль импорта ipmo Импортировать модули в текущий сеанс
Import-PSSes sion ipsn Импортирует команды из другого сеанса в текущий сеанс
Команда вызова icm Позволяет выполнять команды на локальных и удаленных компьютерах
Вызов-выражение iex Позволяет выполнять команды или выражения на локальном компьютере
История вызовов ihy Выполняет команды из вашей истории сеанса
История вызовов г Выполняет то же самое, что и ihy
Invoke-Item ii Выполняет действие по умолчанию для указанного элемента
Invoke-RestMethod irm Отправляет запрос HTTP или HTTPS в веб-службу RESTful
Invoke-WebRequest завиток Получает контент с веб-страницы в Интернете
Invoke-WebRequest iwr Выполняет то же самое, что и curl
Invoke-WMIMethod iwmi Позволяет вызывать методы
инструментария управления Windows (WMI)
Объект измерения мера Определяет числовые свойства объектов, а также слова,
строки и символы в строковых объектах
mkdir мкр Создает новый элемент (каталог)
Переместить элемент миль Позволяет переместить элемент из одного места в другое
Переместить элемент переместить Выполняет то же самое, что и mi
Переместить элемент мв Выполняет те же действия, что и mi и move
Move-ItemProperty mp Позволяет переместить свойство из одного места в другое
Новый псевдоним последний Позволяет создать новый псевдоним
Новый элемент нет Позволяет создать новый элемент
Новый модуль nmo Создает новый динамический модуль, который существует только в памяти
New-PSDrive монтировать Позволяет создавать временные и постоянные подключенные сетевые диски
New-PSDrive ndr Выполняет то же самое, что и mount
New-PSSession nsn Устанавливает постоянное соединение с локальным или удаленным компьютером
New-PSSessionConfigurationFile npssc Создает файл конфигурации сеанса
Новая переменная nv Позволяет создать новую переменную
Out-GridView ogv Позволяет отправлять вывод в интерактивную таблицу в отдельном окне
Out-Host о Отправляет вывод в командную строку (CMD)
Out-Printer lp Позволяет отправлять вывод на принтер
Pop-Location popd Изменяет ваше текущее местоположение на местоположение, которое было помещено в стек в последний раз. Вы можете использовать командлет Push-Location ( pushd ), чтобы
извлекать местоположение либо из его стека по умолчанию, либо из стека, который вы создали.
powershell_ise.exe ise Отображает объяснение того, как можно использовать PowerShell_ISE.exe
инструмент командной строки
Push-Location pushd Добавляет текущее местоположение в начало стека местоположений
Получение задания rcjb Получает результаты текущего сеанса фоновых заданий Windows PowerShell
Receive-PSSession rcsn Получает результаты команд из отключенных сеансов
Remove-Item дель Удаляет файлы и папки
Remove-Item стереть Выполняет то же самое, что и del
Remove-Item рд Выполняет те же действия, что и del и erase
Remove-Item ри Выполняет то же самое, что и del , erase и rd
Remove-Item рм Выполняет те же действия, что и del , erase , rd и ri
Remove-Item rmdir Удаляет папки
Remove-ItemProperty рп Позволяет удалить свойство и его значение из данного элемента
Remove-Job rjb Позволяет удалить фоновое задание Windows PowerShell
Remove-Module рмо Помогает удалить модули из текущего сеанса
Remove-PSBreakpoint rbp Позволяет удалять точки останова с текущей консоли
Remove-PSDrive рдр Удаляет временные диски Windows PowerShell, а также отключает
подключенные сетевые диски
Remove-PSSession RSN Позволяет закрыть один или несколько сеансов Windows PowerShell (PSSessions)
Remove-PSSnapin RSNP Позволяет удалить оснастки Windows PowerShell из текущего сеанса
Remove-Variable rv Очищает переменную и ее значение
Remove-WMIObject rwmi Позволяет удалить экземпляр существующего класса Windows Management
Instrumentation (WMI)
Переименовать элемент аренда Помогает переименовать элемент в пространстве имен поставщика Windows PowerShell
Переименовать элемент рни Выполняет то же самое, что и ren
Rename-ItemProperty РНП Позволяет переименовать свойство элемента
Resolve-Path rvpa Разрешает символы подстановки в пути, а также отображает содержимое
пути
Resume-Job rujb Помогает перезапустить задание, которое было приостановлено
Выбрать объект выбрать Позволяет выбирать объекты, а также их свойства
Установить псевдоним сал Позволяет создавать или изменять псевдоним
командлета или элемента команды (альтернативное имя) в текущем сеансе Windows PowerShell
Set-Content sc Позволяет заменить содержимое файла указанным вами содержимым.
Set-Item си Изменяет значение элемента на значение, указанное в команде
Установить местоположение компакт-диск Позволяет установить ваше текущее рабочее место на определенное место (изменяет активное местоположение)
Установить местоположение chdir Выполняет то же самое, что и cd
Set-PSBreakpoint sbp Позволяет установить точку останова для команды, переменной или строки
Установить переменную установить Позволяет установить значение переменной или создает переменную, если она с
запрошенным именем не существует
Show-Command shcm Отображает список команд Windows PowerShell в графическом
командном окне
Начало работы sajb Starts a background job in Windows PowerShell
Start-Process saps Launches one or more local processes
Start-Service sasv Lets you start one or more stopped services
Stop-Process kill Helps you stop one or more running processes
Where-Object ? Enables you to select certain objects from a collection based on their
property values
Write-Output echo Allows you to send an object to the next command in the pipeline. If it
reaches the last command in the pipeline, the command will display
the objects in the console

Don’t let the sheer amount of basic PowerShell commands intimidate you. Although we called them basic, there’s absolutely no need for you to start memorizing them. In fact, that’s the exact reason why we created the table above so that you can go on about your work without worrying about having to remember each and every command we mentioned above.

You can use it as a quick refresher or even use your browser’s search feature to locate a specific command, its alias, and what it does if you’re confused. Although we already included this piece of information in the table above, if you’re ever confused while working in PowerShell, using the help command will display a few helpful details on how you can use this program and its commands more efficiently.

You can also pair the help command with another command or alias if you want more details about that specific command. For instance, this is what PowerShell displays when you type help Add-Computer:

PowerShell help

However, you can use help with any other of the commands or their aliases in our table above. Make sure you understand that the same command can have multiple aliases, which means that you can achieve the same result by using various aliases. Although this may sound confusing, it actually gives you plenty of flexibility in case you can’t remember one command alias, but you remember another one that can help you achieve the same goal.

Using PowerShell

Naturally, the first thing you’d want to do is locate PowerShell and launch it. One sure way to launch PowerShell from just about anywhere you are on your PC is to hold down the Shift button on your keyboard, right-click any empty spot on your screen (not a menu, icon, button, or similar object), and select Open PowerShell window here from the context menu.

In addition to giving you quick access to the PowerShell console anywhere on your PC, doing so will automatically switch the default working directory for PowerShell to the one you’re currently located at. If you’re on a Windows 10 PC, you can also launch PowerShell by pressing the Win key on your keyboard, typing PowerShell in the Start menu, and selecting PowerShell when it becomes visible in the list of results.

On older versions of Windows, you’ll need to manually locate the PowerShell executable, which you can either find in the Accessories or System folders in your Start menu. Furthermore, seeing how older systems (such as Windows 7) don’t provide you with PowerShell by default, you’ll also have to install it on your computer, along with all of its dependencies.

Notice how launching PowerShell from the Start menu will set your active working directory to C:Users[your username here]. By comparison, using the Shift + Right-click method we’ve presented above will set PowerShell’s active directory to the one you’re currently at when you spawn the console. For instance, if you use Shift + right-click and open PowerShell from your desktop, you’ll notice that the active directory will be C:Users[your username here]Desktop. For obvious reasons, the [your username here] part will be different depending on your username.

Although you can keep PowerShell for home usage just fine, it’s better if you could make use of all that it has to offer. Incidentally, these features make PowerShell awesome for corporate usage, where you need to perform a large number of operations in a short time, and most likely on a huge number of devices.

Thus, instead of running each command manually on every single machine, you could simply create an automation script in PowerShell and receive the information you need automatically, without having to physically interact with the devices in case or even be near them. Just as CMD, PowerShell can be used through command lines. However, unlike its more rudimentary counterpart (i.e. the CMD), PowerShell also lets you summon scripts and cmdlets, which makes it more powerful, but also more complicated to use.

How to use cmdlets

We’ve used the term cmdlets quite a few times in our guide, so you’re probably left wondering whatever they mean. Well, to start at the beginning, it’s worth reminding you that CMD works with commands. A cmdlet, which is pronounced command-let, is also a command, but unlike traditional CMD commands, cmdlets are specific to PowerShell and let you perform single specific operations, such as copying files, moving items from one place to another, changing the active directory, or see the contents of an item.

Simply put, cmdlets are single function commands that you can type directly in PowerShell’s command line. If you have any prior experience with the CMD, you’ll find PowerShell somewhat intuitive to work with. One interesting thing about PowerShell is that it shares plenty of commands with CMD. Therefore, using CD with PowerShell will still change your active directory, DIR will still display the contents of the current folder, and CP will still let you copy an item from one place to another.

It’s quite worth mentioning that PowerShell is not case sensitive, unlike many other shells, which return errors if you miss using the correct case when typing your commands in them. Thus, copy-item will work just as well as Copy-Item, and if you remember neither one of them you can also use Copy, CP, and CPI (but also copy, COPY, cp, or cpi).

Most PowerShell cmdlets are written in C# and are specially built to perform operations that will return a.NET object as their result. At the time being, you could find more than a couple of hundred cmdlets you can use in PowerShell, which, let’s be fair, gives you more than just a little elbow room as far as performing operations goes.

Although it will be difficult to remember all the cmdlets you may have to work with (remember that you can use the table above), there are a few that you’ll use more frequently, which will make them incredibly easy to remember. Not to mention the fact that some of them are intuitive enough that their name actually gives away their purpose (e.g. copy is used to copy items, move can be used to move files, compare helps you compare sets of objects, etc).

However, if you’re not exactly in the mood to bookmark this article to use it later, you could also type in the Get-Command cmdlet in PowerShell, or gcm, if you want to keep things short. Doing so will display a full list of commands that are available to you, and you can use that list to plan ahead on whatever it is you’re trying to do.

Unlocking custom cmdlets

On the downside, Microsoft doesn’t just give you full access to the whole array of cmdlets that you can use in PowerShell by default, so you’ll have to jump through a bunch of extra hoops to unlock this feature and use it at your leisure. The good news is that the unlocking process doesn’t take long, and then there’s the fact that it can also be done through the PowerShell, which will make great practice for you. Without any further ado, let’s see how you can unlock custom cmdlets privileges in PowerShell.

  1. Log in to an Administrator account (it won’t work without Admin rights)
  2. Launch PowerShell with Administrator rights (Run as administrator)
  3. Type the following command in PowerShell and press Enter:
    • Set-ExecutionPolicy
  4. If done right, PowerShell will prompt you with a dialog, asking you for the new ExecutionPolicy value
  5. Type RemoteSigned in the PowerShell command prompt and press Enter
  6. PowerShell will give you a heads up on the risks of modifying the value of the ExecutionPolicy
  7. Type Y and press the Enter keyHow to unlock custom cmdlets in PowerShell
  8. If you need to turn custom cmdlets off, just follow steps 1-4, and when PowerShell asks you to type the value, type Restricted and confirm your choice as you did at step 7

If you want to streamline the whole process and not waste time typing everything down in PowerShell’s command prompt, you’ll be glad to learn that there’s an even simpler way to achieve the same result. Launch PowerShell with Administrator rights as you did at step one, and instead of typing each command and waiting for the prompt, you’re gonna pipeline everything up until the confirmation by typing this:

  • Set-ExecutionPolicy-ExecutionPolicy RemoteSigned

Naturally, you will still need to confirm your choice by typing Y and hitting Enter on your keyboard, but you just skipped a step and performed a series of operations at the same time. This is exactly why advanced PowerShell users create automation scripts to perform various management operations automatically: to save time and hassle. If you want, you can use the same command above to disable custom cmdlets on your system, but you’ll have to replace RemoteSigned with Restricted and also confirm your choice at the end.

You can also use AllSigned and Unrestricted to grant yourself even more privileges when it comes to running potentially unsafe scripts on your Windows PowerShell. The AllSigned option will let you run all scripts that were created by trusted publishers, whereas the Unrestricted option will enable PowerShell to run any script, regardless of its provenience and trustworthiness. Naturally, the Unrestricted option is also the most dangerous, so try to avoid it as best as you can, if possible, especially if you are a PC novice.

See? PowerShell is already starting to look a lot more accessible than it did just a few minutes back.

How to create and use scripts in PowerShell

As we’ve mentioned before and we’re positively sure you remember, you can use PowerShell to run automation scripts. However, you can’t just yell at PowerShell “Hey you, create this script for me!” and expect it to magically work, so you’ll have to put in some elbow grease and get it done yourself. However inconvenient this may sound right now, trust us, you’ll be thankful in the long run, considering all the work you won’t need to do anymore.

Although most of us rely on specialized software such as IDEs to create scripts or programs in a specific programming language, truth be told you can use any text editor as long as it can save files to the right extension. And even if it can’t, you can just navigate to the file you created and modify its extension manually by renaming it, but let’s get back to our sheep.

If you’re interested in creating a script that can work in PowerShell, you’ll be thrilled to learn that this script you’ve probably heard a lot of, is merely a text document with an extension that makes it compatible with PowerShell, PS1. Therefore, it’s easy to see why creating these scripts can be actually handled from within virtually any text editor, as long as you save it with the right (PS1) extension.

Write-host"Please enter your name:"

$Name=read-host

"Hello $Name! Visit AddictiveTips.com for more awesome tutorials and guides!"

Now for the actual creation part:

  1. Launch Notepad (or any other text editor for that matter)
  2. Copy the code above (the script you’ll be creating and running)
  3. Paste it into your new Notepad document
  4. Use CTRL + S to save the document
  5. Type script.ps1 as the file name
  6. Save the file somewhere accessible
  7. Open a PowerShell instance with administrator rights (very important)
  8. Make sure you’ve enabled custom scripts on your system (check sections above)
  9. Navigate to the location where you saved the script
  10. Type the full path of the script to run it
    • For instance, if your script is in a Scripts folder on your C drive, your command will be C:Scriptsscript.ps1
    • Alternatively, you could simply navigate to the location of your script and use this command to run it: .script.ps1

If you can’t run the script and PowerShell returns an error, make sure you’ve enabled PowerShell to run custom scripts on your system, and that you’re running PowerShell as an administrator. Not doing any or both things that we’ve specified in our instructions will most likely result in an error and you won’t be able to run your script.

Remember that this is merely a basic script that is somewhat similar to the classic “Hello, world!” один. It puts a spin on it by interacting with you (i.e. asking what your name is) and letting you interact with it (i.e. typing your name which will be used to print a message for you). However, PowerShell is capable of running far more complex scripts, ranging from collecting data from an array of machines to intricate data management, advanced system configuration operations, and even creating backups of SQL databases in a blink of an eye.

How can I backup SQL databases with PowerShell?

We’re glad you asked. As we’ve mentioned countless times in our guide, there are almost endless possibilities when it comes to operations that PowerShell can help you perform. One of the most popular ones is backing up an SQL database without having to go great lengths or possess extraordinary database management capabilities. All you have to do is fire up an elevated instance of PowerShell (with Administrator privileges) and use the Backup-SqlDatabase command. However, things are a bit more complicated than that, but we’ll get to that in a few.

Backing up an SQL database isn’t as easy as simply copying files from your PC to a safe location and hope they stay safe for whenever you may need them to perform data restoration operations, but on the bright side, using PowerShell can make it look like a walk in the park. Although there are several ways to achieve this, using the command we’ve mentioned above is the fastest, simplest way to backup an SQL database.

Among the capabilities of the Backup-SqlDatabase command, it’s possible to find full database backups, database file backups, as well as transaction log backups, so you got the full package within a single command-line tool. By default, using this command will perform a full database backup, so you will need to specify if you want it to follow a certain set of rules by using the BackupFile parameter.

Note that some versions of PowerShell won’t feature this command by default, so you’ll either have to import it or install it. The good news is that installing the SQL module isn’t exactly rocket science and can be accomplished even by novices. Here’s what you’ll have to do if you can’t use the Backup-SqlDatabase command in your PowerShell session:

  1. Launch PowerShell with administrator rights
  2. Type the following command:
    • install-module sqlserver
  3. When asked to confirm your actions, type Y and hit Enter on your keyboard
  4. Confirm the untrusted repository once more by typing Y and EnterHow to install sqlserver in PowerShell
  5. Once the installation is complete, type the following command:
    • import-module sqlserver
  6. Try running the Backup-SqlDatabase command by typing it in the PowerShell command-line
    • If it works, you should see that PowerShell is asking you to supply values for some parameters
    • If it doesn’t work, make sure that you’ve set PowerShell’s permission to allow it to run custom scripts

1. Complete SQL database backup

  • Backup-SqlDatabase-ServerInstance"ComputerInstance"-Database"AddictiveTips"

The command we’ve exemplified above will generate a full database backup of a database called AddictiveTips and save it to the default backup location of the “ComputerInstance” server instance as ‘AddictiveTips.bak’.

2. Perform a location-based database backup

  • Set-Location"SQLSERVER:SQLComputerInstance"
  • PS SQLSERVER:SQLComputerInstance> Backup-SqlDatabase-Database"AddictiveTips"

The first command above will change your location to the active directory within the server instance on which the backup will occur. Essentially, this technique works almost like the full database backup we’ve exemplified above, but in this example, you get to change the working directory in order to locate the server instance where the backup occurs.

This operation will also create a full backup of a database called AddictiveTips and export it as an ‘AddictiveTips.bak’ file in the default location of the server instance you’re connected to.

3. Perform a transaction log backup

  • Backup-SqlDatabase-ServerInstance"ComputerInstance"-Database"AddictiveTips"-BackupAction Log

If you only need to backup the transaction log of a specific database, PowerShell can also help you do that through a single command you can input straight in its command-line interface. The command above will generate a backup copy of the ‘AddictiveTips’ database’s transaction log and export it to the default location of the ‘ComputerInstance’ server instance as a file named ‘AddictiveTips.trn’.

4. Create an encrypted SQL database backup

  • $EncryptionOption=New-SqlBackupEncryptionOption-Algorithm Aes256-EncryptorType ServerCertificate-EncryptorName"BackupCert"
  • Backup-SqlDatabase-ServerInstance"."-Database"AddictiveTips"-BackupFile"AddictiveTips.bak"-CompressionOption On-EncryptionOption $EncryptionOption

If you’re worried that your database backup may fall in the wrong hands, PowerShell can also help you create ready-encrypted backup files. Naturally, you’ll have to specify some parameters such as the encryption algorithm, the encryption type (i.e. certificate), server instance, database name, backup file, and whether or not you want the output to be compressed.

The example above will create a backup of a certain ‘AddictiveTips’ database, encrypt it with AES-256 encryption and a server certificate, compress it, and save the resulting ‘AddictiveTips.bak’ file on the server instance’s default backup location. This is quite important if you plan a migration and have no surefire way to transport all backup files without risking estranging any single one of them.

5. Perform a backup on all databases in a server instance

  • Get-ChildItem"SQLSERVER:SQLComputerInstanceDatabases"| Backup-SqlDatabase

Another tool that may come in handy is PowerShell’s ability to backup all the databases on a server instance at the same time. Regardless of their number, you just fire up PowerShell, type an adaptation of the command above, and wait for the backup process to come to an end. Note that since this will backup all the databases within the server instance, you may have to wait for a while, so be patient.

The command above will back up all the databases located on the ‘ComputerInstance’ server instance and export the resulting files to the default backup location on the same server instance. The names of the backup files will be generated automatically according to each one’s corresponding database followed by the BAK extension (i.e. .bak).

Although there are several more methods to perform SQL backup with PowerShell in various ways, we’ve only presented a few that we felt were more important. Note that the commands we used in our examples above are not likely to work on your environment in their current form, so you will have to adapt them to your current situation.

For instance, you will have to change the ‘ComputerInstance’ parameter to match your own server instance and modify the name of your database to reflect the name of your own database. Remember that you can always turn to the help command in PowerShell if you ever feel that the command you’re trying to run is confusing or doesn’t work as it should.

Must-know PowerShell commands

1. Get-Help

We can’t stress this enough, but the Get-Help command should be the first one you ever learn, as it can seriously get you out of numerous sticky situations where you’re not exactly sure if you’re using the correct command, or exactly what you can achieve with the command that you’re trying to deploy.

Now that you’ve installed the sqlserver module on your system, you can try the Get-Help command now and see how Backup-SqlDatabase works. Just type Get-Help Backup-SqlDatabase in the command-line of PowerShell and brush up your PowerShell SQL database backup skills.

PowerShell Get-Help command

Note that if you just recently installed the sqlserver module on your system, the Help database may still be outdated, and you may need to run an update on it so that it can catch up on any new scripts. By default, PowerShell will detect that the content you’re trying to reach is available online, but you can’t access it locally, and even offer to update the database for you. In this case, all you need to do is type Y when prompted and hit the Enter key on your keyboard.

However, if PowerShell just prompts you with an error stating that there’s no help manual available for the command you’re interested in, you can update it manually by typing Update-Help and hitting the Enter key on your keyboard. After the update process comes to an end, you should be able to check available help documentation for the command you’re interested in.

2. Get-Process

Get-Process is paramount if you want to discover more about the system you’re currently working on. To be more specific, although you might’ve guessed what this command does already by merely looking at it, Get-Process will provide you with a list of all the processes that are currently running on the system you’re working on.

By default, Get-Process will retrieve a list of every process running on the current system you’re working on, so you may need to append some extra parameters to this command if you want more specific information and narrow the list of results. Check out in the screenshots below what you get when you run the Get-Process command by itself versus how it looks if you’re more specific and format the results.

  • Get-Process

PowerShell Get-Process

  • Get-Process explorer | Format-List *

Formatted Get-Process command in PowerShell

The second command can be customized to display additional details about any active process on your system. You can replace explorer with svchost or Chrome or any other active process on your system that you’re interested in. As we’ve mentioned above, using Get-Processes by itself can help you with that (i.e. finding a list of all running processes).

3. Stop-Process

This command is pretty much self-explanatory,  as you may already have figured out that it can help you stop processes that are currently running on your system. The most common reason for doing that from PowerShell and not by using the Windows Task Manager is that sometimes processes can freeze and make GUI apps barely usable.

PowerShell users can easily identify a troublesome process using the Get-Process command we’ve previously explained, then using Stop-Process to terminate it, thus unclogging the system. Running Stop-Process by itself (without any additional parameter) in your PowerShell command-line interface will prompt you to input the ID of the process you’re trying to terminate.

However, you can also terminate a process by its name (if you know it) by appending the -Name parameter to the cmdlet, like in the example below:

  • Stop-Process-Name"explorer"

The command above will terminate the Explorer process, which can be useful especially if it freezes or crashes on you and refuses to load properly. Note that you’ll need to use quotes when specifying the name of the process you’re trying to terminate. If a process is stubborn and refuses to terminate (usually higher clearance processes do that), you can “convince” it by appending a -Force parameter to your command. Say, for instance, that you can’t terminate your Explorer process. In this case, you can simply type the command below:

  • Stop-Process-Force-Name"explorer"

Furthermore, it’s worth mentioning that using the -Force parameter in your Stop-Process command won’t ask for confirmation, as opposed to running the command without this option. If you want to find out more about this cmdlet, make sure to use the Get-Help command.

4. Get-Service

This command is among the essential command list for a good reason: it can provide you with a list of all the services that are currently installed on the system you’re working on, regardless of whether they’re running or not. As with many other cmdlets, you can customize Get-Service to provide you with more specific information, either regarding a certain service or even displaying a list of all running (or stopped) services on your machine.

You can go ahead and type Get-Service in your PowerShell command line. Doing so should provide you with a list of all the services available on your computer, as well as their display names and statuses. If you append an additional command to the original cmdlet, you can change the output, making it display only results that you’re interested in.

  • Get-Service"W*"

For instance, typing the command above should return a list of all services available on your computer that start with the letter ‘W’. However, you can go even further and customize your command in order to narrow the list of results even more.

  • Get-Service | Where-Object {$_.Status-eq “Running”}

The command above will let you see a list of all the available services on your computer that are also running at the time you’re running the cmdlet. Appending the “W*” as we did in the previous example will display a list of all the running services on your computer that start with the letter ‘W’, and the command should look like this:

  • Get-Service"W*"| Where-Object {$_.Status-eq"Running"}

Get-Service PowerShell command

5. Get-EventLog

Every responsible system administrator should know its way around working with event logs, seeing that these documents can provide you with useful knowledge about what happened on your system, at what time did it occur, and sometimes even what triggered that specific event.

Therefore, we can safely assume that PowerShell’s Get-EventLog command is not something you want to be missing from your toolbelt, especially if you plan on honing your system administration skills. If you know everything there is to know about event logs and their names, you can go ahead and type Get-EventLog directly in your PowerShell’s command line. Note that PowerShell will prompt you to input the name of the log you’re trying to view.

If you type the name of an empty event log (one with no entries), PowerShell will prompt you with an error and return you to the command-line interface. Therefore, it would be easier if you just used the command below, which will provide you with a list of Event Logs on your system, along with additional details about each one, such as the default overflow action, and the number of entries.

  • Get-EventLog-List

One of the most popular use cases for event logs is checking for errors, especially if they occurred silently, were shortly followed by a system crash, or lead to a BSOD, which we all know how cryptic can be. However, you will need to be more specific with the Get-EventLog cmdlet if you want to narrow down the list of results, which oftentimes can be huge.

  • Get-EventLog-LogName Security-EntryType Error

Typing the command above in your PowerShell’s command-line interface should provide you with a list of all the errors registered in your Security event log. Note that you can use the-List parameter to see all the log types in your system and replace Security in the command above with any other log type that you find on your list, just as long as it has more than zero entries.

If you want to learn more about using the Get-EventLog command in PowerShell, feel free to use the Get-Help command we’ve talked about in the first section of this subchapter.

6. ConvertTo-HTML

Sometimes when you’re using PowerShell, you may stumble upon certain information that you want to extract and keep for future reference, create reports, or simply import it from a different application. One of the most frequently-used ways to extract this data from PowerShell and export it to an external file on your computer is the ConvertTo-HTML command.

Using this command will help you build comprehensive reports that can help you analyze extracted information and insights in a more effective manner by providing you with HTML tables that you can customize later by adding custom styles and color-coded data. As with many other PowerShell commands, ConvertTo-HTML doesn’t work by itself, and you’ll need to pair it up with an additional command which it will use as an input (or a source of data).

For instance, if you’re trying to print a report consisting of every service that starts with the letter ‘W’ and is currently running on your computer, you can type the command below:

  • Get-Service"W*"| Where-Object {$_.Status-eq"Running"} | ConvertTo-HTML

This will provide you with an HTML code of the data you fed to the ConvertTo-HTML function, which you can simply copy directly from the PowerShell’s command-line interface, paste it in your favorite text editor and save it as an HTML file, which you can use to view the result in any web browser.

You can use ConvertTo-HTML with virtually any PowerShell command, as long as the command you’re using as a data source will generate output. You can try it with other cmdlets, such as Get-Process, Get-EventLog, or Get-Help. Note that aside from HTML conversions, the ConvertTo cmdlet can also be used to generate JSON, CSV, and XML files. You just have to replace HTML in the command syntax with the format you’re interested in.

7. Export-CSV

If you’re working with various objects that you feel may fit way better in a table, you can use PowerShell to convert the items you’re currently handling into a series of CSV (comma-separated value) strings and export the strings to a file in one swift motion through the Export-CSV cmdlet.

As with ConvertTo-HTML, Export-CSV needs an input that it can convert to CSV strings, as it can’t just work on its own. Thus, you will need to pair it with a command that can be used to generate data, such as the Get-Service or Get-Process ones we’ve explained earlier.

Essentially, Export-CSV does almost the same thing as the ConvertTo-HTML cmdlet we’ve discussed above, aside from one important aspect that shouldn’t be overlooked: this cmdlet actually generates a file and saves it on your computer, as opposed to the ConvertTo command, which only gives you the output and lets you create the file on your own.

Let’s assume, for instance, that you’d like to turn the list of services running on your computer into a CSV file so that you can process the file further with third-party software, or put it in a spreadsheet for further reference. All you’d have to do is type the Get-Service command followed by the Export-CSV one, and mention a location where you’d like the CSV file to be generated, like in the example below:

  • Get-Service | Export-CSV c:AddictiveTips.csv

The command above will fetch a list of all the services that are available on your computer, running or not, convert them into a series of CSV strings, and save the result as a CSV file named ‘AddictiveTips’ in the root of your C drive. You can then open the file in a third-party software solution, convert it into a fully-fledged table, or just store it for future usage.

PowerShell cheatsheet – CONCLUSION

Although there’s still a lot of people advocating for CMD, truth be told PowerShell is more versatile, way more powerful, but at the same time more complicated to work with than its traditional CMD counterpart. The sheer amount of features, combined with the fact that you can create automation scripts in PowerShell and perform complicated system management operations just leaves CMD in a cone of shadow.

If you’re just starting to discover PowerShell and you’re struggling to figure out what each command does, how to pipeline several commands, or how to create and run simple PowerShell scripts on your own, our guide is a great starting point. We’ve taken our time to explain some of the most important commands you should know about in PowerShell, created a few short tutorials, and also included a list of basic PowerShell commands, their aliases, and short descriptions for each item, just to simplify your PowerShell discovery journey.

Доброго времени суток дорогие читатели. В данной статье мы познакомимся с основами Powershell. Данный язык программирования используется во всех ОС Microsoft начиная с Windows XP SP3. Писать Powershell скрипты должен уметь каждый уважающий себя системный администратор windows.

Все команды в Powershell как правило используются в форме командлетов. Все командлеты это специализированные классы .NET Framework и .NET Core (используется в PowerShell Core 6 и выше).

Powershell класса .NET Framework это версии с 1 по 5.1 а Powershell .NET Core это версия 6 и выше (на данный момент 7.0). По заявлению Microsoft новых функций в Powershell 5.1 (.NET Framework) вносить уже не будут. Однако 7 версия еще не полностью поддерживает все модули предыдущих версий. Но судя по всему Microsoft стремится к этому и скоро версия Core будет единственной. В общем cmd отходит в прошлое и теперь без Powershell никуда. Давайте приступим к практике. Так всегда лучше запоминается материал.

Запуск Powershell

На примере Windows 10 Powershell можно запустить просто нажав правой кнопкой мыши на меню пуск.

Также нижняя строчка позволяет запустить Powershell с повышенными правами администратора.

Еще можно воспользоваться поиском в WIndows 10 и ввести название powershell

Как видно на картинке выше нашелся не только Powershell но и Powershell ISE. Консоль powershell удобна если требуется запустить последовательно не больше одной команды. Либо несколько команд в конвейере. Однако в случае написания полноценных скриптов лучше использовать Powershell ISE. Это бесплатная среда разработки сценариев на языке Powershell поставляется вместе с ОС Windows.

Окно Powershell
Окно Powershell ISE

Сразу после запуска консоли рекомендую запустить командлет Get-Help — встроенная справка по всем командлетам, аналог man в Linux.

Get-Help

Видим что консоль предлагает обновить встроенную помощь. Нажимаем Y и соглашаемся.

Командлеты

Командлеты — это название команд в Powershell. Каждый командлет реализует заложенную в него функциональность. Как правило наименование командлета состоит из пары: глагол-существительное. Например: Get-Help — получить помощь. Обычно Get используется чтобы получить информация, Set — внести изменение, New — создать новый объект, политику и т.п. и Remove -удалить объект, политику и т.п.

Командлеты не чувствительны к регистру. Написать Get или get не важно, powershell воспримет эти команды одинаково.

Чтобы получить список всех доступных командлетов необходимо использовать Get-Command

Get-Command

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

Давайте представим что нам необходимо вывести список командлетов для управления процессами. Воспользуемся Get-Command и укажем ему параметры для более точного поиска.

Get-Command *Process*

И вот мы видим список командлетов позволяющих управлять процессами: Get-Process — список всех запущенных процессов, Start-Process — запустить указанный процесс, Stop-Process— остановить указанный процесс, Wait-Process — ожидать указанный процесс. Как видно из названий командлетов можно легко понять для чего каждый служит.

Используя командлет Get-Help можно получить справку по любому командлету.

PS C:WINDOWSsystem32> Get-Help Get-Process

ИМЯ
    Get-Process

ОПИСАНИЕ
    Gets the processes that are running on the local computer or a remote computer.


СИНТАКСИС
    Get-Process [[-Name] <System.String[]>] [-ComputerName <System.String[]>] [-FileVersionInfo] [-Module] [<CommonParameters>]

    Get-Process [-ComputerName <System.String[]>] [-FileVersionInfo] -Id <System.Int32[]> [-Module] [<CommonParameters>]

    Get-Process [-ComputerName <System.String[]>] [-FileVersionInfo] -InputObject <System.Diagnostics.Process[]> [-Module] [<Com
    monParameters>]

    Get-Process -Id <System.Int32[]> -IncludeUserName [<CommonParameters>]

    Get-Process [[-Name] <System.String[]>] -IncludeUserName [<CommonParameters>]

    Get-Process -IncludeUserName -InputObject <System.Diagnostics.Process[]> [<CommonParameters>]


ОПИСАНИЕ
    The `Get-Process` cmdlet gets the processes on a local or remote computer.

    Without parameters, this cmdlet gets all of the processes on the local computer. You can also specify a particular process b
    y process name or process ID (PID) or pass a process object through the pipeline to this cmdlet.

    By default, this cmdlet returns a process object that has detailed information about the process and supports methods that l
    et you start and stop the process. You can also use the parameters of the `Get-Process` cmdlet to get file version informati
    on for the program that runs in the process and to get the modules that the process loaded.


ССЫЛКИ ПО ТЕМЕ
    Online Version: https://docs.microsoft.com/powershell/module/microsoft.powershell.management/get-process?view=powershell-5.1
    &WT.mc_id=ps-gethelp
    Debug-Process
    Get-Process
    Start-Process
    Stop-Process
    Wait-Process

ЗАМЕЧАНИЯ
    Для просмотра примеров введите: "get-help Get-Process -examples".
    Для получения дополнительных сведений введите: "get-help Get-Process -detailed".
    Для получения технических сведений введите: "get-help Get-Process -full".
    Для получения справки в Интернете введите: "get-help Get-Process -online"

При использовании командлета есть возможность указать несколько параметров при запуске. Первый параметр можно не называть. Выше я писал Get-Command *Process* где указал поиск командлетов со словом Process. Однако я не написал параметр -Name, хотя именно его и указал. Если полностью то поиск по имени выглядит так: Get-Command -Name *Process* . В случае отсутствия непосредственного указания -Name Powershell принимает в качестве имени введенное слово *Process*.

Давайте выведем список процессов с именем WhatsApp

Get-Process -Name WhatsApp -IncludeUserName
Get-Process

Мы вывели все процессы с именем WhatsApp и добавили в вывод дополнительный параметр -IncludeUserName, что позволило нам увидеть кем запущен процесс.

Алиасы

Алиасы в Powershell это по сути более короткие названия командлетов. Т.е. любому командлету можно присвоить свое короткое имя (alias). Например алиасом для командлета Get-Process является gps. Согласитесь куда проще и быстрее написать gps чем Get-Process.

Список всех alias можно получить используя командлет Get-Alias

PS C:WINDOWSsystem32> get-alias

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           % -> ForEach-Object
Alias           ? -> Where-Object
Alias           ac -> Add-Content
Alias           asnp -> Add-PSSnapin
Alias           cat -> Get-Content
Alias           cd -> Set-Location
Alias           CFS -> ConvertFrom-String                          3.1.0.0    Microsoft.PowerShell.Utility
Alias           chdir -> Set-Location
Alias           clc -> Clear-Content
Alias           clear -> Clear-Host
Alias           clhy -> Clear-History
Alias           cli -> Clear-Item
Alias           clp -> Clear-ItemProperty
Alias           cls -> Clear-Host
Alias           clv -> Clear-Variable
Alias           cnsn -> Connect-PSSession
Alias           compare -> Compare-Object
Alias           copy -> Copy-Item
Alias           cp -> Copy-Item
Alias           cpi -> Copy-Item
Alias           cpp -> Copy-ItemProperty
Alias           curl -> Invoke-WebRequest
Alias           cvpa -> Convert-Path
Alias           dbp -> Disable-PSBreakpoint
Alias           del -> Remove-Item
Alias           diff -> Compare-Object
Alias           dir -> Get-ChildItem
Alias           dnsn -> Disconnect-PSSession
Alias           ebp -> Enable-PSBreakpoint
Alias           echo -> Write-Output
Alias           epal -> Export-Alias
Alias           epcsv -> Export-Csv
Alias           epsn -> Export-PSSession
Alias           erase -> Remove-Item
Alias           etsn -> Enter-PSSession
Alias           exsn -> Exit-PSSession
Alias           fc -> Format-Custom
Alias           fhx -> Format-Hex                                  3.1.0.0    Microsoft.PowerShell.Utility
Alias           fl -> Format-List
Alias           foreach -> ForEach-Object
Alias           ft -> Format-Table
Alias           fw -> Format-Wide
Alias           gal -> Get-Alias
Alias           gbp -> Get-PSBreakpoint
Alias           gc -> Get-Content
Alias           gcb -> Get-Clipboard                               3.1.0.0    Microsoft.PowerShell.Management
Alias           gci -> Get-ChildItem
Alias           gcm -> Get-Command
Alias           gcs -> Get-PSCallStack
Alias           gdr -> Get-PSDrive
Alias           ghy -> Get-History
Alias           gi -> Get-Item
Alias           gin -> Get-ComputerInfo                            3.1.0.0    Microsoft.PowerShell.Management
Alias           gjb -> Get-Job
Alias           gl -> Get-Location
Alias           gm -> Get-Member
Alias           gmo -> Get-Module
Alias           gp -> Get-ItemProperty
Alias           gps -> Get-Process
Alias           gpv -> Get-ItemPropertyValue
Alias           group -> Group-Object
Alias           gsn -> Get-PSSession
Alias           gsnp -> Get-PSSnapin
Alias           gsv -> Get-Service
Alias           gtz -> Get-TimeZone                                3.1.0.0    Microsoft.PowerShell.Management
Alias           gu -> Get-Unique
Alias           gv -> Get-Variable
Alias           gwmi -> Get-WmiObject
Alias           h -> Get-History
Alias           history -> Get-History
Alias           icm -> Invoke-Command
Alias           iex -> Invoke-Expression
Alias           ihy -> Invoke-History
Alias           ii -> Invoke-Item
Alias           ipal -> Import-Alias
Alias           ipcsv -> Import-Csv
Alias           ipmo -> Import-Module
Alias           ipsn -> Import-PSSession
Alias           irm -> Invoke-RestMethod
Alias           ise -> powershell_ise.exe
Alias           iwmi -> Invoke-WmiMethod
Alias           iwr -> Invoke-WebRequest
Alias           kill -> Stop-Process
Alias           lp -> Out-Printer
Alias           ls -> Get-ChildItem
Alias           man -> help
Alias           md -> mkdir
Alias           measure -> Measure-Object
Alias           mi -> Move-Item
Alias           mount -> New-PSDrive
Alias           move -> Move-Item
Alias           mp -> Move-ItemProperty
Alias           mv -> Move-Item
Alias           nal -> New-Alias
Alias           ndr -> New-PSDrive
Alias           ni -> New-Item
Alias           nmo -> New-Module
Alias           npssc -> New-PSSessionConfigurationFile
Alias           nsn -> New-PSSession
Alias           nv -> New-Variable
Alias           ogv -> Out-GridView
Alias           oh -> Out-Host
Alias           popd -> Pop-Location
Alias           ps -> Get-Process
Alias           pushd -> Push-Location
Alias           pwd -> Get-Location
Alias           r -> Invoke-History
Alias           rbp -> Remove-PSBreakpoint
Alias           rcjb -> Receive-Job
Alias           rcsn -> Receive-PSSession
Alias           rd -> Remove-Item
Alias           rdr -> Remove-PSDrive
Alias           ren -> Rename-Item
Alias           ri -> Remove-Item
Alias           rjb -> Remove-Job
Alias           rm -> Remove-Item
Alias           rmdir -> Remove-Item
Alias           rmo -> Remove-Module
Alias           rni -> Rename-Item
Alias           rnp -> Rename-ItemProperty
Alias           rp -> Remove-ItemProperty
Alias           rsn -> Remove-PSSession
Alias           rsnp -> Remove-PSSnapin
Alias           rujb -> Resume-Job
Alias           rv -> Remove-Variable
Alias           rvpa -> Resolve-Path
Alias           rwmi -> Remove-WmiObject
Alias           sajb -> Start-Job
Alias           sal -> Set-Alias
Alias           saps -> Start-Process
Alias           sasv -> Start-Service
Alias           sbp -> Set-PSBreakpoint
Alias           sc -> Set-Content
Alias           scb -> Set-Clipboard                               3.1.0.0    Microsoft.PowerShell.Management
Alias           select -> Select-Object
Alias           set -> Set-Variable
Alias           shcm -> Show-Command
Alias           si -> Set-Item
Alias           sl -> Set-Location
Alias           sleep -> Start-Sleep
Alias           sls -> Select-String
Alias           sort -> Sort-Object
Alias           sp -> Set-ItemProperty
Alias           spjb -> Stop-Job
Alias           spps -> Stop-Process
Alias           spsv -> Stop-Service
Alias           start -> Start-Process
Alias           stz -> Set-TimeZone                                3.1.0.0    Microsoft.PowerShell.Management
Alias           sujb -> Suspend-Job
Alias           sv -> Set-Variable
Alias           swmi -> Set-WmiInstance
Alias           tee -> Tee-Object
Alias           trcm -> Trace-Command
Alias           type -> Get-Content
Alias           wget -> Invoke-WebRequest
Alias           where -> Where-Object
Alias           wjb -> Wait-Job
Alias           write -> Write-Output

Как видно из списка для alias использованы аналогичные по значению команды из Linux: ls, man, mount, md, kill и т.п. Видимо чтобы линуксоиду было по привычнее 🙂 Можно создать свой alias используя командлет New-Alias

Конвейер

Конвейер используется для передачи выходных данных командлета идущего вначале во входные данные командлета следующего за ним. Ничего непонятно? 🙂 Давайте на примерах, так всегда яснее.

Возьмем уже известный нам командлет Get-Process, посмотрим на его вывод

Get-Process

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

Get-Process|Select-Object ID,CPU,ProcessName
Get-Process|Sort-Object

Как вы уже наверно догадались конвейер обозначается знаком | и идет сразу следом за командлетом. И так данные по конвейеру можно передавать и дальше другим командлетам. Итак я передал выходные данные (список запущенных процессов) на вход командлета Select-Object. Который в свою очередь выбрал данные по 3 столбцам ID, CPU, ProcessName. Теперь можно передать эти данные дальше. Например выгрузить в текстовый файл

Get-Process|Select-Object ID,CPU,ProcessName|Out-File C:TMPout.txt

Просто не правда ли? У нас конвейер из трех командлетов, на выходе которого получаем текстовый файл со списком запущенных процессов и необходимой информацией по ним.

Структура объектов

В Powershell объекты играют самую важную роль. От типа объекта зависит что именно с ним можно сделать. Узнать тип объекта и вывести список всех его элементов позволяет команда Get-Member

Get-Process|get-Member

Вот далеко не полный список элементов командлета Get-Process. В данному случае тип данных это System.Diagnostics.Process

Давайте посмотрим тип данных у новой переменной

$new="Test"
$new|Get-Member
Get-Member String

В данном случае тип данных System.String т.е. строка. Что вполне логично. А теперь посмотрите что можно сделать с этой строкой с учетом указанных выше параметров.

Get-Member methods

Как видно на картинке выше мы заключаем нашу тестовую переменную $new в скобки и после них пишем точку и указываем метод. В примере я использовал три метода:

  • ToUpper — перевод всех букв в строке в верхний регистр
  • ToLower — перевод всех букв в строке в нижний регистр
  • Length — подсчитать количество символов в строке

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

Скрипты Powershell

В самом начале статьи указал на встроенный инструмент Powershell ISE. Давайте запустим его и создадим свой первый скрипт. Кстати скрипты сохраняются в файлах с расширением ps1

Скрипт будет запускать блокнот, далее выполняется проверка если блокнот запущен выводится сообщение об этом и после блокнот закрывается. Если блокнот не запущен то выводится соответствующее сообщение об этом. На самом деле блокнот будет всегда запущен, т.к. мы вначале скрипта написали Start-Process notepad

Start-Process notepad
$a=Get-Process notepad
if ($a.ProcessName -like "Notepad")
{
Write-Host "Блокнот запущен, давайте его закроем"
Stop-Process -name notepad
}
else 
{
Write-Host "Блокнот не запущен, что поделать"
}
Powershell скрипты

В этом скрипте я использовал цикл if else. О циклах будет подробнее в следующей статье. Итак давайте сохраним скрипт и выполним его.

В ответ мы получим такую ошибку:

Невозможно загрузить файл, так как выполнение сценариев отключено в этой системе. Для получения дополнительных сведений см.
 about_Execution_Policies по адресу https:/go.microsoft.com/fwlink/?LinkID=1351
70.
    + CategoryInfo          : Ошибка безопасности: (:) [], ParentContainsError 
   RecordException
    + FullyQualifiedErrorId : UnauthorizedAccess

Все верно, изначально в WIndows запрещено выполнять скрипты Powershell. Это сделано для повышения безопасности системы. Для включения возможности запуска скриптов Powershell необходимо запустить Powershell от Администратора и ввести командлет Set-ExecutionPolicy с одним из параметров:

  • Restricted — политика по умолчанию. Выполнение всех скриптов запрещено
  • RemoteSigned — разрешено запускать собственные скрипты и подписанные доверенным разработчиком
  • AllSigned — разрешено запускать скрипты, подписанные доверенным разработчиком. Каждый раз перед запуском такого скрипта PowerShell будет запрашивать подтверждение
  • Unrestricted — в системе разрешается запускать любые скрипты

Если вы полностью уверены в запускаемых скриптах можете поставить Unrestricted. Давайте так и сделаем

Set-ExecutionPolicy -Unrestricted
Set-ExecutionPolicy

Будет предупреждение по безопасности, соглашаемся нажав Y

Можем посмотреть текущую настройку политики безопасности при помощи командлета Get-ExecutionPolicy

Get-ExecutionPolicy

В данной статье мы рассмотрели основы чтобы подготовиться писать скрипты Powershell. В следующих статьях мы более подробно изучим циклы, массивы, функции, работу со строками и много другое. Кстати вот раздел посвященный Powershell. Там много всего интересного 😉

Рекомендую к прочтению:
  • Переменные
  • Операторы сравнения
  • Операторы условий
  • Циклы
Хотите отблагодарить автора статьи? Это даст ему дополнительный стимул к написанию новых статей.

Понравилась статья? Поделить с друзьями:

Вот еще несколько интересных статей:

  • Powershell windows 10 как запустить скрипт
  • Powershell new object system windows forms form
  • Powershell ise скачать для windows 10
  • Powershell export csv encoding windows 1251
  • Powershell exe windows powershell что это

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии