Командлетов в 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
- Работа с переменными
- Форматирование в Windows PowerShell
- Импорт и экспорт
- Работа с сетью в Windows PowerShell
- Работа с элементами
- Командлеты для работы с Active Directory (AD)
- Работа с Hyper-V
- Работа с фоновыми заданиями
- Работа с объектами
- Командлеты PowerShell для удаленного управления
- Работа со службами и процессами
- Работа с компьютером
- Работа с контентом
- Другие командлеты 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. Для этих целей существует немало командлетов, вот некоторые из них:
- 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, надеюсь, этот справочник будет Вам полезен, удачи!
Windows PowerShell является мощным средством и может выполнять практически все, что хочет человек на своем компьютере. Но единственная проблема заключается в том, что это инструмент командной строки и не имеет графического интерфейса. Тем не менее, это может быть полезно, когда интерфейс на основе графического интерфейса не работает или перестает отвечать. К сожалению, главным является тот факт, что обычному пользователю не хватает знаний об использовании PowerShell в полной мере. Но сегодня мы попытаемся обсудить 10 лучших команд PowerShell, которые могут помочь пользователю сделать больше в Windows 10.
Команды PowerShell, которые помогут пользователю сделать больше
Прежде чем мы начнем, необходимо подчеркнуть, что некоторые из этих командлетов могут переключать определенные параметры или конфигурацию на вашем компьютере. Командлет – это сценарий PowerShell, который выполняет одну функцию. Поэтому, чтобы быть в безопасности, сначала создайте точку восстановления системы. Если во время выполнения одного из следующих командлетов что-то пойдет не так, вы всегда сможете восстановить свой компьютер.
Мы рассмотрим командлеты , которые могут выполнять следующие действия:
- Запустите приложение UWP.
- Получить справку о любом командлете.
- Получите похожие команды.
- Найти определенный файл.
- Прочитайте содержимое файла.
- Найти информацию обо всех услугах на компьютере.
- Найти информацию обо всех процессах на компьютере.
- Установка политики выполнения.
- Скопируйте файл или каталог.
- Удалить файл или каталог.
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"
У вас есть другие полезные командлеты, которыми вы можете поделиться со всеми нами? Не стесняйтесь записывать их в поле для комментариев ниже.
Шпаргалка по 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. Эти команды возвращают один или несколько объектов в конвейер, в конце которого мы упоминаем некоторые свойства объектов в следующей таблице, чтобы увидеть их значения, отображаемые на экране.
Команда | Описание |
|
Эта команда позволяет получить поддержку с помощью PowerShell. |
|
Эта команда предлагает вам список доступных PSDrives, таких как c, env, hklm, hkcu, alias и т.д. |
|
В любом реестре дочерние ключи — это подключи текущего ключа. Чтобы получить необходимые сведения, можно воспользоваться следующей командой. |
|
Выполните эту команду, чтобы рекурсивно перечислить все дочерние элементы текущего PSdrive, папки или ключа реестра. |
|
Используйте эту команду для включения скрытых папок (каталогов). |
|
Выполните любую из этих команд, чтобы получить список имен файлов и каталогов в текущей папке. |
|
Используйте эту команду, чтобы получить количество записей в коллекции объектов, возвращенных командой Get-Children. |
PSdrives
PSdrives — это коллекция объектов, сгруппированных вместе, чтобы к ним можно было получить доступ как к диску файловой системы. PSprovider» выполняет эту группировку.
По умолчанию сеанс PS может обращаться к нескольким PSdrives, включая c:, env:, alias: и HKLM:, где c: означает обычный диск c Windows; env: — это пространство переменных среды Windows; alias: — это коллекция псевдонимов команд; а HKLM — это ветка в реестре.
При любом сеансе PS пользователь попадает в свою домашнюю папку. Если вы хотите перейти из сеанса PS на другой диск PSdrive и получить информацию с этого диска, воспользуйтесь следующими командами:
Команды | Описание |
|
Символ подсказки изменится на «ENV:>». Установите env, выполнив следующую команду:
|
|
Эта команда предоставит вам все переменные окружения. |
|
Используйте эту команду, чтобы получить переменные окружения «userprofile». |
|
Выполните следующую команду, чтобы изменить символ подсказки на » Alias». |
|
Выполните эту команду, чтобы получить все дочерние элементы всех псевдонимов. |
|
Используйте эту команду, чтобы снова получить приглашение «C:/>», вернувшись к диску по умолчанию. |
|
Выполните эту команду, чтобы узнать, что означает псевдоним «ls». |
Конвейеры
Cmdlets использует конвейеры для передачи объектов, но не потоков символов, как Unix. Символ конвейера — | (ASCII 124), за которым следует команда, обрабатывающая вывод, проходящий через конвейер. Конвейер состоит из следующих трех этапов.
Get-ChildItem *.txt | Where-Object length -lt 1000 | Sort-Object length
В следующей таблице приведены некоторые из основных команд конвейеров:
Команда | Описание |
|
Легко устанавливает значение свойства ‘lastwritetime.year’ на текущую дату и время, не влияя на содержимое файла. |
|
Предоставляет пустой результат |
|
Изменяет старые имена файлов и расширения файлов на новые |
|
Тривиальная команда переименования, вызывающая автоматическую переменную |
|
Если у передаваемого объекта $_ нет свойства (name), вы получите ошибку, так как параметр $_.name является null |
|
Отображает список имен всех файлов, присутствующих в текущей папке, отсортированных в алфавитном порядке. |
|
Перемещает все файлы в подкаталог папки |
|
Выдает сообщение об ошибке, что Move-Item не имеет входа |
Alias (Алиас)
Cmdlets поддерживают несколько псевдонимов. В следующей таблице приведены некоторые псевдонимы и их описания:
Команда | Описание |
|
Добавляет значение к файлу |
|
Поиск содержимого файла в массиве |
|
Изменение папки, ключа или диска PS |
|
Очищает консоль |
|
Удаление файлов |
|
Списки папок, ключей или дочерних элементов PSDrive |
|
Отправляет массив в консоль, конвейер или перенаправляет его в файл |
|
Обход каждого объекта в конвейере |
|
Форматирует таблицу с выбранными свойствами для каждого объекта в каждом столбце |
|
Форматирует свойства процесса по имени |
|
Обеспечивает псевдоним командлета |
|
Предоставляет вам команды только из текущей сессии |
|
Извлечение всех членов объекта |
|
Предоставляет свойства указанного элемента |
|
Получает текущее значение для указанного свойства при использовании параметра name |
|
Находит имена переменных сеансов |
|
Создает новый файл, каталог, символическую ссылку, ключ реестра или запись реестра. |
|
Выдает полный список всех запущенных процессов |
|
Предоставляет местоположение текущего каталога или ключа реестра |
|
Переименовывает старое имя элемента в новое имя |
|
Удаляет указанный каталог, файлы или ключи реестра |
|
Удаляет указанную переменную |
|
Приостанавливает деятельность на определенный период времени |
Операторы
Арифметические операторы
Оператор | Описание | Пример |
+ | Складывает целые числа; объединяет | 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
Функция
Именование функции
Для именования функции используйте имя регистра Паскаля с утвержденным глаголом и существительным в единственном числе. Список утвержденных глаголов можно получить, выполнив Get-Verb:
Get-Verb | Sort-Object -Property Verb
Создание простой функции
Для создания простой функции используйте ключевое слово function, за которым следует имя функции. Затем используйте открытую и закрывающую фигурные скобки. Функция будет выполнять код, содержащийся в этих фигурных скобках.
Например:
function Get-Version { $PSVersionTable.PSVersion }
Работа с модулями
Модуль — это пакет, содержащий объекты PowerShell, такие как команды, провайдеры, функции, рабочие процессы, значения переменных и псевдонимы. Элементы пакета можно реализовать в сценарии PowerShell, скомпилированной библиотеке DLL или и в том, и в другом. PowerShell автоматически импортирует модули при первом запуске любой команды в установленном модуле. Вы можете использовать команды в модуле без настройки или конфигурации профиля.
Как использовать модуль
Чтобы использовать любой модуль, его необходимо сначала установить. Затем найдите команду, которая поставляется вместе с модулем, и используйте ее.
Установка модуля
Если вы получили модуль в виде папки, установите его перед использованием в командной строке PowerShell. Некоторые модули являются предустановленными. Вы можете использовать следующую команду для создания каталога Modules для текущего пользователя:
New-Item -Type Directory -Path $HOMEDocumentsPowerShellModules
Скопируйте всю папку модуля в каталог Modules. Для копирования папки можно использовать любой метод, включая проводник Windows, Cmd.exe и PowerShell.
Поиск установленных модулей
Выполните следующие действия, чтобы найти модули, установленные в местоположении модулей по умолчанию (не импортированные).
Get-Module -ListAvailable
Поиск команд в модуле
Выполните следующую команду, чтобы найти команды модуля:
Get-Command -Module <module-name> Get-Command -Module Microsoft.PowerShell.Archive
Импортирование модуля
Выполните следующую команду с нужным именем модуля:
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 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 через диалоговое окно Выполнить…, которое открывается через сочетание клавиш Windows + R.
Если по каким-то причинам у вас не установлен PowerShell, то необходимо сделать это, следуя инструкции в базе знаний Microsoft.
В случае успеха откроется синее окно. 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, несмотря на отсутствие специальных команд. Однако эти команды требуют опыта или смекалки.
Отдельно хочется отметить командлет Test-Connection, который делает то же самое, что утилита ping, но не имеет такого алиса. Разница между утилитой и командлетом в формате вывода: утилита выводит текст, а командлет возвращает объект, который можно использовать в конвейерах.
Конвейер PowerShell: особенности и параметры
По своей задумке конвейеры в PowerShell не отличаются от конвейеров в *nix-системах: они перенаправляют вывод одной команды на ввод другой. Как отмечалось ранее, в PowerShell происходит взаимодействие не с текстом, а с объектами. При выводе на экран объект трансформируется в таблицу, чтобы человеку было удобнее читать, но не всегда таблица выводит все поля объекта.
Особенность конвейеров PowerShell заключается в том, что конвейер передает результат не целиком, а по одному объекту. Командлет Test-Connection выводит четыре объекта: по одному на каждый ICMP-запрос. Если подключить командлет к конвейеру, то можно увидеть подтверждение этому тезису. Воспользуемся командлетом Select-Object, чтобы выбрать колонку со временем запроса.
Test-Connection selectel.ru | Select-Object ‘Time(ms)’
После запуска данной команды можно наблюдать, как с некоторой задержкой печатаются пустые строки по одной.
Но как же так? Дело в том, что отображение объекта при выводе на экран не всегда соответствует имени поля в объекте. Чтобы получить полный список полей в объекте, необходимо вызвать командлет 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-скриптов с автодополнением,
- окно для интерактивного выполнения командлетов в скрипте,
- список доступных командлетов с поиском.
Обратите внимание, что модуль 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 позволяет выполнять задачи в фоновом режиме, эту функциональность обеспечивают командлеты с существительным 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, администрирование систем со скриптами в этой программе будет довольно простым.
Когда дело доходит до запуска команд в 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)
Как использовать 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 — это аксессуары папка после того, как вы установили программу.
Как запустить командлеты
В двух словах, командлет — это однофункциональная команда. Вы вводите командлеты в командную строку, как если бы вы использовали обычную команду или утилиту. Командлеты являются основным способом взаимодействия с 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 сценарий представляет собой текстовый файл с расширением 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, но одним из самых простых является использование команды 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-файл в виде таблицы. Например:
Затем вы можете добавить свои собственные цвета и границы, чтобы уточнить его представление.
Экспорт-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
Если вы когда-нибудь захотите получить доступ к журналам событий вашего компьютера (или журналам на удаленных компьютерах) при использовании 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 нередки случаи зависания процесса. Всякий раз, когда это происходит, вы можете использовать Get-Process получить имя процесса, испытывающего трудности, а затем остановить его с помощью Stop-Process команда. Как правило, вы завершаете процесс по его имени. Например:
PS C: > Stop-Process -Название «Блокнот»
В этом примере пользователь завершил работу Блокнота с помощью команды Stop-Process.
PowerShell: мощный интерфейс командной строки
Хотя переход на PowerShell может показаться довольно сложным, его интерфейс командной строки работает практически так же, как и любой другой. У него могут быть свои уникальные командлеты, но множество онлайн-ресурсов может помочь вам в решении любых административных задач. Чтобы максимально использовать возможности PowerShell, вам просто нужно привыкнуть к множеству доступных вам команд..
Будучи новым пользователем, легко напасть на 200 с лишним командлетов PowerShell. Убедитесь, что вы начинаете с интерфейса командной строки, прежде чем перейти к полноценному графическому интерфейсу. Независимо от того, являетесь ли вы новичком в PowerShell или интерфейсах командной строки, в Интернете доступно более чем достаточно информации, чтобы помочь вам максимально эффективно использовать этот мощный инструмент.
PowerShell позволит нам выполнять все виды основных задач в Windows, а также обеспечит совместимость с командами CMD. Таким образом, мы можем использовать команды командной строки в дополнение к вашим собственным. Но прежде чем мы начнем, давайте узнаем немного больше об этом продвинутом терминале Microsoft операционная система.
Содержание
- Что такое PowerShell и для чего он нужен?
- Преимущества использования в качестве администратора
- Как открыть в Windows
- Основные и важные команды
- Помогите использовать любую команду
- Найти и открыть файлы
- Найти команду
- Создать новый каталог
- Копировать и удалять файлы или каталоги
- Список всех файлов в папке
- Создание файлов и папок
- Знать все содержимое файла
- Изменить политику выполнения
- Просмотр, запуск, остановка, приостановка или перезапуск службы или процесса
- Запуск приложений UWP в Windows
Это инструмент командной строки это позволит нам выполнять различные типы комбинаций команд, называемых сценариями, которые позволят нам создавать, настраивать и автоматизировать несколько типов системных задач без необходимости использовать для этого рабочий стол или граф интерфейса. Не исключено, что многим продвинутым пользователям хотя бы внешне напоминает мифическую MS-DOS, ведь по функционалу она куда более полная и продвинутая, чем эта.
PowerShell основан на .NET CLR, что делает его идеальным для автоматизации процессов как на компьютере, так и на сервере, поскольку позволяет нам выполнять все виды системных функций и задач . Таким образом, речь идет об инструменте, специально разработанном для опытных пользователей, которого следует избегать неопытным пользователям, поскольку любая модификация может непоправимо повлиять на правильное функционирование системы.
Преимущества использования в качестве администратора
На этом этапе важно знать, что, как и остальные приложения операционной системы, PowerShell может выполняться по-разному. Мы можем открыть его в обычном режиме, благодаря которому у нас будут заблокированы определенные разрешения, такие как:
- Изменения в политике исполнения.
- Модификация системных файлов.
- Изменения реестра.
Это особенно интересно, потому что менее опытные пользователи могут в конечном итоге внести изменения в систему, которые могут привести к ее повреждению. В случае, если вы хотите иметь полный контроль, необходимо будет запустить приложение от имени администратора.
Как открыть в Windows
Как только мы узнаем немного больше о PowerShell, важно узнать, как мы можем его открыть. Будь то в Windows 10 или Windows 11, есть разные способы сделать это, но наиболее распространенным является ввод «Windows PowerShell» в поле поиска меню «Пуск».
Позже важно учесть возможность запуска его от имени администратора, поскольку это позволит нам выполнять все виды задач, даже самые полные. Поэтому, как только мы увидим значок исполняемого файла Windows PowerShell, мы должны щелкнуть значок Запуск от имени администратора вариант, который мы находим на правой стороне.
Основные и важные команды
Как только мы узнаем больше о PowerShell, мы покажем вам ряд основных и важных команд, которые мы должны знать для работы с этой консолью командной строки. По мере того, как мы их осваиваем, мы можем углубляться в них.
Помогите использовать любую команду
Вполне возможно, что при использовании команд PowerShell мы обнаружим, что не знаем, как их использовать. Для этого мы можем использовать команду Get-Help, с помощью которой мы будем получать различные типы помощи. Будь то общая справка, конкретная команда или знание того, как работает любая команда:
Get-Help
Get-Help <comando>
Get-Help <comando> -Full
Get-Help <comando> -Example
Get-Help *
Иногда также может быть полезно использовать команду Update-Help, которая поможет нам загрузить библиотеки справки.
Найти и открыть файлы
В случае, если нам нужно найти конкретный каталог с этой консоли, команда Get-Item, которая будет отвечать за отображение соответствующего содержимого. Для этого напишем:
Get-Item <ruta>
Если мы хотим открыть файл из этой консоли, мы должны использовать команду, аналогичную предыдущей, например:
Get-Content <ruta al archivo con su extensión>
Эта команда наиболее полезна для непосредственного получения списков информации в Windows PowerShell.
Найти команду
Вполне вероятно, что когда мы хотим выполнить какую-либо команду, мы можем не помнить точно ее синтаксис, поэтому PowerShell имеет возможность поиска их, просто запомнив ее часть.
Чтобы найти команды похожего типа или содержащие определенную фразу, можно использовать командлет Get-Command. Однако в нем перечислены не все командлеты PowerShell, поэтому он позаботится об использовании некоторых фильтров. Можно использовать команды:
Get-Comand – Name <nombre>
Get-Commad – CommandType <tipo>
Мы будем использовать первую команду для получения команд, связанных с указанным нами именем, а вторая используется для выполнения определенной функции.
Создать новый каталог
С PowerShell мы также можем создать новый каталог с помощью команды mkdir. Важно, чтобы при указании имени мы избегали использования пробелов.
Например, мы можем создать каталог DocumentITIGIC
mkdir DocumentoITIGIC
Мы также можем избежать использования пробелов, вставив дефис или подчеркивание, например:
mkdir DocumentoITIGIC
Копировать и удалять файлы или каталоги
Еще одна функция консоли Windows — это возможность копирования и удаления файлов или каталогов, для чего мы можем использовать команды Copy-Item или Remove-Item в зависимости от того, что нам нужно.
Чтобы скопировать файл или каталог, мы используем:
Copy-Item "ruta al archivo de origen con extensión" -Destination "ruta de destino"
Если мы хотим удалить его, мы должны выбрать:
Remove-Item "ruta al archivo con extensión"
Список всех файлов в папке
Если мы хотим увидеть все элементы, которые находятся внутри папки, мы можем сделать это с помощью команды:
Get-ChildItem
Мы можем добавить параметр Force, чтобы также показывать скрытые элементы системы, например, диск C:.
Get-ChildItem -Path C: -Force
Создание файлов и папок
С PowerShell у нас также есть возможность создавать новые элементы в зависимости от типа элемента. Если у вас есть более одного типа элемента, необходимо будет указать тип элемента.
Эта команда создает новую папку:
New-Item -Path 'C:tempNueva carpeta' -ItemType Directory
Эта команда создает новый пустой файл:
New-Item -Path 'C:tempNueva carpetafile.txt' -ItemType File
Знать все содержимое файла
Если нам нужно узнать все содержимое текстового файла по определенному пути, мы можем использовать команду Get-Content, чтобы иметь возможность изучить его, не открывая. Использование Get-Content само по себе не очень полезно, но его можно комбинировать с более конкретными командлетами для получения более точных результатов.
Например, мы можем увидеть содержимое файла softzone.htm.
Get-Content "C:/softzone.txt"
Мы также можем увидеть 10 строк текста, включенных в эту статью.htm
Get-Content "C:/softzone.txt" – TotalCount 20
Изменить политику выполнения
Хотя PowerShell поддерживает создание и запуск скриптов, он также имеет ограничения для каждого из них в рамках мер безопасности. Уровень безопасности можно изменить на любой из четырех уровней ограничений. Для этого можно использовать команду Set-ExecutionPolicy, за которой следует любой из уровней безопасности, которые мы увидим ниже:
Set-ExecutionPolicy Unrestricted
Set-ExecutionPolicy All Signed
Set-ExecutionPolicy Remote Signed
Set-ExecutionPolicy Restricted
В этом списке политики безопасности варьируются от наименее ограничительных до наиболее ограничительных.
Просмотр, запуск, остановка, приостановка или перезапуск службы или процесса
В Windows есть определенные службы, которые представляют собой небольшие используемые процессы приложений, которые всегда работают в фоновом режиме, например, чтобы всегда быть начеку для запуска или проверки обновлений в фоновом режиме.
Список запущенных сервисов
Если мы хотим увидеть в PowerShell полный список запущенных служб, мы должны использовать Get-Сервис команда. С помощью других команд мы можем выполнять определенные действия, такие как:
Start-Service <nombre del servicio>
Stop-Service <nombre del servicio>
Suspend-Service <nombre del servicio>
Resume-Service <nombre del servicio>
Restart-Service <nombre del servicio>
Команды, показанные в порядке убывания, могут выполнять такие действия, как запуск нового процесса, остановка работающего, его приостановка, возобновление или перезапуск.
Список открытых процессов
Аналогичным образом мы можем работать с процессами Windows. Чтобы увидеть список со всеми открытыми процессами, мы можем использовать команду Get-Process. С его помощью мы можем выполнять определенные действия, такие как:
Start-Process <nombre del proceso>
Stop-Process <nombre del proceso>
Wait-Service <nombre del proceso>
В списке в порядке убывания мы можем запустить новый процесс, остановить его или поставить на удержание.
Запуск приложений UWP в Windows
Одной из целей PowerShell является возможность быстрого запуска приложений UWP, поэтому мы можем использовать его для открытия определенных приложений или создания собственных сценариев. Для этого используем команду Star-Process.
Например, если мы хотим открыть настройки Windows, мы используем:
Start-Process "ms-settings:"
Если мы хотим использовать приложение UWP, например Spotify, команда для записи будет
Start-Process "spotify:"
Таким образом, без необходимости использования графического интерфейса Windows, мы можем запускать приложения как из системы, так и загруженные из Магазина Microsoft.
Содержание
- 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.
Прежде чем мы начнем, необходимо подчеркнуть, что некоторые из этих командлетов могут переключать определенные параметры или конфигурацию на вашем компьютере. Командлет — это сценарий PowerShell, который выполняет одну функцию. Поэтому, чтобы быть в безопасности, сначала создайте точку восстановления системы. Если во время выполнения одного из следующих командлетов что-то пойдет не так, вы всегда сможете восстановить свой компьютер.
Мы рассмотрим командлеты , которые могут выполнять следующие действия:
- Запустите приложение UWP.
- Получить справку о любом командлете.
- Получите похожие команды.
- Найти определенный файл.
- Прочитайте содержимое файла.
- Найти информацию обо всех услугах на компьютере.
- Найти информацию обо всех процессах на компьютере.
- Установка политики выполнения.
- Скопируйте файл или каталог.
- Удалить файл или каталог.
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 много поэтому сегодня я предлагаю рассмотреть небольшой список наиболее полезных и часто используемых командлетов с кратким описанием того, что они умеют. Данный справочник поможет Вам быстрей найти интересующую Вас команду 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