Глава 1. начало работы с powershell

Фоновое исполнение заданий

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

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

В Windows PowerShell для работы с фоновыми заданиями есть следующие командлеты:

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

Для запуска в фоновом режиме необходимо написать команду Start-Job, а в фигурных скобках {} команду или набор команд, которые необходимо выполнить в фоновом режиме.

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

Запуск задачи в фоновом режиме

  
   Start-Job {Get-Service}

Смотрим на список задач запущенных в фоновом режиме

  
   Get-Job

Отображаем результат работы задания Job1

  
   Receive-Job Job1

Как видим, у нас появилась задача со статусом «Completed», т.е. она уже выполнилась (просто Get-Service отрабатывает быстро).

Для того чтобы посмотреть результат работы фоновой задачи, т.е. командлета Get-Service, мы выполнили команду Receive-Job и передали ей имя задания (можно и значение идентификатора). В результате у нас отобразился список служб.

Что способствовало появлению Windows PowerShell?

До появления PowerShell существовали (и существуют) следующие инструменты для автоматизации и администрирования сервисов: командная строка Windows и Windows Script Host. Но у этих технологий есть недостатки.

У командной строки Windows есть и возможность выполнять какие-то административные задачи и возможность записать алгоритм действий, сохранив его в виде скрипта (bat-файла), при этом можно использовать некие элементы программирования, например, использовать переменные, условные конструкции и даже что-то вроде циклов.

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

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

Технология Windows Script Host позволяет выполнять все административные задачи, что и командная строка, включая их автоматизацию путем написания WSH скриптов, но здесь мы уже можем использовать полноценные языки программирования (VBScript и JScript), т.е. можно реализовывать сложную логику и алгоритмы. К тому же с помощью WSH мы управляем программными продуктами через объектный интерфейс, другими словами Windows Script Host намного «круче» чем командная строка. Но данная технология также не стала тем идеальным инструментом администрирования и автоматизации этого администрирования для системных администраторов, так как Windows Script Host требовал знаний вышеперечисленных языков программирования, что для системных администраторов на самом деле лишнее. Администраторам нужно всего лишь простой инструмент администрирования с возможностью запрограммировать какие-то действия, а углубляться в объектные модели программных продуктов на языках программирования VBScript и JScript им не хочется.

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

7.2.0-preview.8 — 2021-07-22

Engine Updates and Fixes

  • Add a Windows mode to that allows some commands to use legacy argument passing ()
  • Use to get parameter names when creating () (Thanks @gukoff!)
  • Test if a command is ‘Out-Default’ more thoroughly for transcribing scenarios ()
  • Add to telemetry allow list ()

General Cmdlet Updates and Fixes

  • Use for and for output ()
  • Highlight using error color the exception and underline in for ()
  • Implement a completion for View parameter of format cmdlets () (Thanks @iSazonov!)
  • Add support to colorize file names ()
  • Don’t serialize to JSON ETS properties for and types ()
  • Fix setter () (Thanks @xtqqczze!)
  • Add to ()

Code Cleanup

We thank the following contributors!

@iSazonov, @xtqqczze

  • Remove file () (Thanks @iSazonov!)
  • Implement for () (Thanks @xtqqczze!)
  • Fix implementation for () (Thanks @xtqqczze!)
  • Delete IDE dispose analyzer rules () (Thanks @xtqqczze!)
  • Seal private classes () (Thanks @xtqqczze!)
  • Enable IDE0029: () (Thanks @xtqqczze!)
  • Enable IDE0070: () (Thanks @xtqqczze!)
  • Enable IDE0030: () (Thanks @xtqqczze!)
  • Fix CA1846 and CA1845 for using instead of ()
  • Use to avoid creating temporary list () (Thanks @xtqqczze!)
  • Enable IDE0044: () (Thanks @xtqqczze!)
  • Disable IDE0130 () (Thanks @xtqqczze!)
  • Make classes sealed () (Thanks @xtqqczze!)
  • Enable CA1043: Use integral or string argument for indexers () (Thanks @xtqqczze!)
  • Enable CA1812 () (Thanks @xtqqczze!)
  • Replace with when we know the element count is 1 () (Thanks @xtqqczze!)
  • Skip analyzers for () (Thanks @xtqqczze!)
  • Fix CA2243: Attribute string literals should parse correctly () (Thanks @xtqqczze!)
  • Enable CA1401 () (Thanks @xtqqczze!)
  • Fix CA1309: Use ordinal in Certificate Provider () (Thanks @xtqqczze!)
  • Fix CA1839: Use () (Thanks @xtqqczze!)
  • Add new analyzer rules () (Thanks @xtqqczze!)

Tools

  • Add parameter to () (Thanks @xtqqczze!)
  • Create issue template for issues updating PowerShell through Windows update. ()
  • Add to build () (Thanks @xtqqczze!)
  • Convert GitHub issue templates to modern forms ()

Build and Packaging Improvements

Update .NET to version

  • Add new package name for ()
  • Prefer version when available for dotnet-install ()
  • Make warning about MU being required dynamic ()
  • Add before running tests ()
  • Update to .NET 6 Preview 6 and use ()
  • Enable ARM64 packaging for macOS ()
  • Make Microsoft Update opt-out/in check boxes work ()
  • Add Microsoft Update opt out to MSI install ()
  • Bump from to () (Thanks @dependabot!)
  • Fix computation of SHA512 checksum ()
  • Update the script to use quality parameter for ()
  • Generate SHA512 checksum file for all packages ()
  • Enable signing daily release build with lifetime certificate ()
  • Update metadata and README for 7.2.0-preview.7 ()

Documentation and Help Content

  • Fix broken RFC links ()
  • Add to bug report template getting details from ()
  • Update issue templates to link to new docs ()
  • Add @jborean93 to Remoting Working Group ()

Как скачать PowerShell 7 в командной строке

Разработчики PowerShell также создали скрипт, который можно вызывать непосредственно из PowerShell. Это однострочный командлет, который автоматически загружает и запускает мастер установки. Всё, что вам нужно сделать, это вставить фрагмент кода и нажать клавишу Enter.

Запустите PowerShell и скопируйте/вставьте в окно следующий командлет:

iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"

Нажмите клавишу Enter, и PowerShell запустит команду и начнёт загрузку.

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

Invoke-Expression "& { $(Invoke-RestMethod https://aka.ms/install-powershell.ps1) } -UseMSI"

То есть на первом этапе команда скачивает файл https://aka.ms/install-powershell.ps1, а затем запускает его.

Что такое вирус Powershell.exe?

Для начала нужно знать, что такое Powershell.exe

Подлинный файл Powershell.exe является важной частью системы Windows и находится в подпапках каталога. C: Windows System32 WindowsPowerShell v1.0

Наконечник:Что такое каталог System 32 и почему его не следует удалять?

Как видите, Powershell.exe — это исполняемый файл, связанный с PowerShell, и в нормальном состоянии он не причиняет вреда вашему компьютеру.

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

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

7.2.0-preview.7 — 2021-06-17

Engine Updates and Fixes

  • Fix splatting being treated as positional parameter in completions () (Thanks @MartinGC94!)
  • Prevent PowerShell from crashing when a telemetry mutex can’t be created () (Thanks @gukoff!)
  • Ignore all exceptions when disposing an instance of a subsystem implementation ()
  • Wait for SSH exit when closing remote connection () (Thanks @dinhngtu!)

General Cmdlet Updates and Fixes

  • Fix retrieving dynamic parameters from provider even if globbed path returns no results ()
  • Revert «Enhance Remove-Item to work with OneDrive ()» due to long path issue ()

Code Cleanup

We thank the following contributors!

@octos4murai, @iSazonov, @Fs00

  • Correct parameter name passed to exception in constructor () (Thanks @octos4murai!)
  • Enable nullable: () (Thanks @iSazonov!)
  • Clean up code regarding and ()
  • Replace with and remove () (Thanks @Fs00!)

Build and Packaging Improvements

We thank the following contributors!

  • Update README.md and metadata.json for version 7.2.0-preview.6 ()
  • Make sure GA revision increases from RC and Preview releases ()
  • Remove from in build.psm1 () (Thanks @schuelermine!)
  • Update next channel to take daily build from .NET preview 5 ()
  • Fix update in the release pipeline ()

Documentation and Help Content

  • Add new members to Engine and Cmdlet Working Groups document ()
  • Update the command to exclude the folder that should be ignored ()
  • Replace ‘User Voice’ with ‘Feedback Hub’ in ()
  • Update Virtual User Group chat links () (Thanks @Jaykul!)
  • Fix typo in () (Thanks @eltociear!)
  • Add notes to PowerShell API ()
  • Updated governance on Working Groups (WGs) ()
  • Correct and improve XML documentation comments on () (Thanks @octos4murai!)

SHA256 Hashes of the release artifacts

  • powershell-7.2.0-preview.7-linux-alpine-x64.tar.gz
  • powershell-7.2.0-preview.7-linux-arm32.tar.gz
  • powershell-7.2.0-preview.7-linux-arm64.tar.gz
  • powershell-7.2.0-preview.7-linux-x64.tar.gz
  • powershell-7.2.0-preview.7-linux-x64-fxdependent.tar.gz
  • powershell-7.2.0-preview.7-osx-x64.pkg
  • powershell-7.2.0-preview.7-osx-x64.tar.gz
  • PowerShell-7.2.0-preview.7-win-arm32.zip
  • PowerShell-7.2.0-preview.7-win-arm64.zip
  • PowerShell-7.2.0-preview.7-win-fxdependent.zip
  • PowerShell-7.2.0-preview.7-win-fxdependentWinDesktop.zip
  • PowerShell-7.2.0-preview.7-win-x64.msi
  • PowerShell-7.2.0-preview.7-win-x64.zip
  • PowerShell-7.2.0-preview.7-win-x86.msi
  • PowerShell-7.2.0-preview.7-win-x86.zip
  • powershell-preview_7.2.0-preview.7-1.deb_amd64.deb
  • powershell-preview-7.2.0_preview.7-1.rh.x86_64.rpm

Что такое Windows PowerShell

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

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

Давайте подробно рассмотрим, какие функции и преимущества предлагает эта оболочка от Microsoft:

  • Интеграция с Microsoft .NET Framework. NET Framework – это среда управляемого выполнения для Windows, предоставляющая широкий спектр сервисов для запуска приложений. Команды сценариев PowerShell имеют доступ к ресурсам .NET Framework.
  • Объектно-ориентированный. В отличие от большинства оболочек, которые принимают и возвращают чистый текст, все команды PowerShell, генерирующие выходные данные, возвращают объекты .NET Framework, устраняя необходимость разбора текста в случае, если выходные данные команды нужны для последующей команды.
  • Command-Let. Windows PowerShell представляет концепцию command-let или cmdlet, инструмента командной строки с единственной функцией, встроенной в оболочку. Доступно более ста системных командлетов. Кроме того, вы можете писать собственные командлеты и делиться ими с другими пользователями. Каждый командлет может использоваться отдельно или в сочетании с другими для выполнения сложных задач.
  • Предназначен для системных администраторов. PowerShell включает функции, предназначенные для системных администраторов, такие как возможность работы на удаленных компьютерах, доступ к реестру Windows и запуск или остановка служб.

Возможность обнаружения

Скомпилированные команды в PowerShell называются командлетами. В оригинале слово cmdlet произносится полностью: «командлет». Имена командлетов соответствуют форме отдельных команд «глагол — существительное», что позволяет легко их находить. Например, командлет определяет выполняемые процессы, а командлет получает список служб и их состояний. В PowerShell существуют другие типы команд, например псевдонимы и функции, которые будут рассмотрены далее в этом пособии. Команда PowerShell — это универсальное понятие, которое часто используется для ссылки на любой тип команды в PowerShell, независимо от того, является ли он командлетом, функцией или псевдонимом.

Командлеты

Командлеты именуются по правилу Глагол-Существительное, например, Get-ChildItem, благодаря чему их предназначение понятно из названия. Командлеты выводят результаты в виде объектов или их коллекций. Дополнительно командлеты могут получать входные данные в такой же форме и, соответственно, использоваться как получатели в конвейере. Хотя PowerShell позволяет передавать по конвейеру массивы и другие коллекции, командлеты всегда обрабатывают объекты поочередно. Для коллекции объектов обработчик командлета вызывается для каждого объекта в коллекции по очереди.

Экземпляры объектов создаются в PowerShell и запускаются им при вызове. Командлеты наследуются от Cmdlet или от PSCmdlet, причём последний используется тогда, когда командлету необходимо взаимодействовать с исполняемой частью PowerShell (англ. PowerShell runtime). В этих базовых классах оговорены некоторые методы — BeginProcessing(), ProcessRecord() и EndProcessing(), как минимум один из которых реализация командлета должна перезаписать для предоставления своей функциональности. Каждый раз при запуске командлета эти методы вызываются PowerShell по очереди. Сначала вызывается BeginProcessing(), затем, если командлету передаются данные по конвейеру, ProcessRecord() для каждого элемента, и в самом конце — EndProcessing(). Класс, реализующий Cmdlet, должен иметь один атрибут .NET — CmdletAttribute, в котором указываются глагол и существительное, составляющие имя командлета. Популярные глаголы представлены в виде перечисления.

Улучшенные возможности редактирования с помощью Visual Studio Code

Visual Studio Code (VS Code) с расширением PowerShell — поддерживаемая среда написания скриптов для PowerShell 7. Интегрированная среда сценариев (ISE) Windows PowerShell поддерживает только Windows PowerShell.

Обновленное расширение PowerShell включает в себя:

  • новый режим совместимости ISE;
  • PSReadLine в интегрированной консоли, в том числе выделение синтаксиса, многострочное редактирование и обратный поиск;
  • повышенную стабильность работы и производительность;
  • интеграцию с CodeLens;
  • усовершенствованное автоматическое заполнение пути.

Чтобы упростить переход на Visual Studio Code, используйте возможность Enable ISE Mode (Включить режим ISE), доступную в палитре команд. Эта функция переключает VS Code в режим макета в стиле ISE. Режим макета в стиле ISE предоставляет все новые функции и возможности PowerShell в знакомом пользовательском интерфейсе.

Чтобы переключиться на новый макет ISE, нажмите клавиши CTRL+SHIFT+P, чтобы открыть палитру команд, введите и выберите PowerShell: Enable ISE Mode (PowerShell: включить режим ISE).

Чтобы задать исходный макет, откройте палитру команд и выберите PowerShell: Disable ISE Mode (restore to defaults) (PowerShell: выключить режим ISE (восстановить значения по умолчанию)).

Дополнительные сведения о настройке макета VS Code для ISE см. в статье Репликация функций интегрированной среды скриптов в Visual Studio Code.

Примечание

Добавление в ISE новых возможностей сейчас не планируется. Теперь ISE в последних версиях Windows 10 или Windows Server 2019 и более поздних может удалить пользователь. Окончательное удаление ISE сейчас не планируется. Команда PowerShell и ее партнеры по работе сейчас работают над совершенствованием возможностей написания скриптов с использованием расширения PowerShell для Visual Studio Code.

Что такое Windows PowerShell?

PowerShell разработан на основе среды CRL и платформы .NET Framework и в отличие от командной строки, которая принимает и возвращает текст, Windows PowerShell работает с объектами. У каждого объекта в PowerShell есть свойства и методы, которые можно использовать для управления этими объектами.

В Windows PowerShell Microsoft разработала концепцию командлетов (cmdlets), которая представляет собой систему именования команд «Глагол-Существительное». Данная система позволяет системным администраторам быстрей освоить и упростить работу с PowerShell.

С помощью Windows PowerShell можно:

  • Получать доступ к файловой системе;
  • Управлять реестром;
  • Управлять службами;
  • Управлять процессами;
  • Настраивать операционную систему;
  • Устанавливать программное обеспечение;
  • Устанавливать роли и компоненты сервера;
  • Осуществлять администрирование и конфигурирование ролей и компонентов сервера;
  • Писать и использовать сценарии для автоматизации управления и администрирования;
  • Выполнять другие задачи системных администраторов.

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

Также для удобства многие часто используемые команды и утилиты в PowerShell имеют синонимы (Alias), например cls — это синоним командлета Clear-Host, dir синоним Get-ChildItem (полный список синонимов можно посмотреть путем запуска командлета Get-Alias).

Для упрощения поиска нужной команды в PowerShell есть специальный командлет Get-Command, с помощью которого можно осуществлять поиск, как по глаголу, так и по существительному. Все команды в Windows PowerShell сгруппированы в модули (например, Hyper-V, NetTCPIP), что также упрощает поиск нужной команды.

После того как нужная команда найдена, можно посмотреть инструкцию по работе с этой командой, т.е. справку, для этих целей есть специальный командлет Get-Help, например следующая команда покажет справку по командлету Get-Command:

  
   Get-Help Get-Command

Справка в Windows PowerShell может быть краткой, детальной (параметр -Detailed), полной (параметр -Full), а также можно выводить только примеры (параметр — Examples). Следующая команда покажет только примеры использования командлета Get-Command:

  
   Get-Help Get-Command -Examples

Справка PowerShell обновляемая, т.е. ее можно обновить командой Update-Help.

Как открыть PowerShell в Windows 10?

Вызвать на своем компьютере ПоверШелл удастся несколькими способами. Эта встроенная в ОС утилита может быть закреплена в Пуске, то есть в списке установленных на компьютере программ. Найти аналог командной консоли можно через Проводник, Диспетчер задач, поисковую строку и даже через службу Выполнить. В процессе поиска пользователю нужно лишь написать название утилиты на английском языке.

Из меню «Win + X»

Как самостоятельно открыть ПоверШелл, вызвав контекстное меню:

  • перейти на рабочий стол;
  • одновременно нажать на кнопки «Win» и «X»;
  • откроется меню «Приложения и возможности»;
  • отыскать в списке название утилиты на английском;
  • из меню попасть в консоль ПоверШелл можно на пользовательских или администраторских правах;

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

Как попасть в ПоверШелл, если при нажатии на «Win» и «X» открывается командная строка:

  • активировать «Параметры»;
  • отыскать «Персонализация»;
  • перейти в «Панель задач»;
  • отыскать фразу «Заменить командную строку оболочкой WinPowerShell…»;
  • переместить переключатель в позицию «Вкл.»;

  • вернуться на рабочий стол;
  • еще раз нажать на «Win» и «X».

С помощью поиска

Как самостоятельно запустить ПоверШелл (через «Поиск»):

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

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

Из Проводника

Как самостоятельно вызвать утилиту (используя Проводник Виндовс 10):

  • выполнить активацию Проводника;
  • в поисковую строчку ввести название (на английском);
  • на дисплее появится искомое приложение.

Еще один способ вызова ПоверШелл (используя Проводник):

  • активировать виндовский Проводник;
  • отыскать папку с названием утилиты (на английском);
  • обычно ПоверШелл находится: C:\Windows\System32\WindowsPowerShell\v1.0 или C:\Windows\syswow64\Windowspowershell\v1.0;

через «Файл», или используя правую клавишу мыши, открыть найденное приложение в нужном режиме (на пользовательских или администраторских правах).

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

Как самостоятельно активировать утилиту через Пуск:

  • перейти в Пуск;
  • откроется список всех установленных на ПК программ;
  • отыскать название утилиты (на английском);
  • запустить в нужном режиме (на пользовательских или администраторских правах).

Как вызвать ПоверШелл из консоли Выполнить:

  • активировать Выполнить;
  • в строчке «Открыть» написать символы: «powershell»;

нажать на «ОК».

Как самостоятельно открыть утилиту из командной строки:

  • вызвать консоль (на администраторских правах);
  • в окошке написать символы: «powershell»;

  • кликнуть на «Enter»;
  • оболочка утилиты запустится в интерфейсе вызванной командной консоли.

Как вызвать приложение (через Диспетчер задач):

активировать на своем ПК «Диспетчер…»;

  • отыскать вверху подраздел «Файл»;
  • в меню «Файл» активировать «Запустить новую задачу»;
  • появится всплывающее окошко «Создание задачи»;

  • в строчке «Открыть» написать символы: «powershell»;
  • если нужно, поставить галочку возле опции «Создать задачу с администраторскими правами»;
  • кликнуть на «ОК».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector