Запускать несколько строк скрипта powershell в cmd
Содержание:
- История команд в сеансе работы Windows PowerShell
- Редактирование с помощью Visual Studio Code
- Чтения файла под другим пользователем
- Немного о PowerShell для Windows 10
- Известные проблемы и их решенияKnown issues and workarounds
- Основные команды для PowerShell
- Как открыть PowerShell на Windows 10: возможные способы
- Версии Windows PowerShell
- Получение данных
- Что делать, если PowerShell не открывается
- Шаг 3: установка файлов помощи
- Шаг 7: анализ полезных команд PowerShell
История команд в сеансе работы Windows PowerShell
Все команды которые мы выполняем в оболочке Windows PowerShell, система записывает в специальный журнал сеанса или журнал команд, что даёт возможность повторно использовать эти команды или их комбинации, не набирая их повторно на клавиатуре.
По умолчанию Windows PowerShell сохраняет последние 64 команды. Для изменения числа сохраняемых команд нужно изменить значение специальной переменной $MaximumHistoryCount, например:
Просмотреть полный список выполнявшихся команд можно нажав клавишу F7 но, можно просматривать не весь список, а только те команды которые начинаются с определённых символов, для этого нужно ввести начальные символы и нажимать F8 для прокручивания списка команд начинающихся с этих символов.
Также есть возможность выполнить команду по её номеру в истории команд, для этого нужно нажать F9 и ввести порядковый номер в истории команд.
Кроме клавиатурных комбинаций для работы с журналом команд в Windows PowerShell имеются специальные командлеты, get-history (псевдонимы h, history и ghy) позволяет вывести историю команд, по умолчанию последние 32 команды. Число выводимых команд можно изменить с помощью параметра -Count.
Можно выделять из журнала сеанса команды, удовлетворяющие определённому критерию. Для этого используется конвейер и специальный командлет Where-Object. Например, для вывода команд, содержащих слово del, можно выполнить следующую команду:
×
Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!
Полученный с помощью Get-History список команд можно экспортировать во внешний файл в формате XML или CVS (текстовый файл с запятыми в качестве разделителя). Например:
Get-History | Export-CSV .\pshistory.csv
С помощью командлета Add-History можно добавлять команды обратно в журнал сеанса:
Import-CSV .\pshistory.csv | Add-History
Командлет Invoke-History (псевдонимы r, сокращение от «repeat» или «return», и ihy) позволяет повторно выполнять команды из журнала сеанса, при этом команды можно задавать по их порядковому номеру или первым символом, а также получать по конвейеру от командлета Get-History. Например:
Редактирование с помощью Visual Studio Code
-
Установите Visual Studio Code. Дополнительные сведения см. в статье Setting up Visual Studio Code (Настройка Visual Studio Code).
Доступны инструкции по установке на каждой платформе:
- Windows: следуйте инструкциям по установке на странице Запуск Visual Studio Code в Windows.
- macOS: следуйте инструкциям по установке на странице Запуск Visual Studio Code в macOS.
- Linux: следуйте инструкциям по установке на странице Запуск Visual Studio Code в Linux.
-
Установите расширение PowerShell.
-
Запустите приложение Visual Studio Code, введя в консоли или , если вы установили Visual Studio Code Insiders.
-
Запустите Quick Open в Windows или Linux, нажав клавиши CTRL+P. В macOS нажмите клавиши CMD+P.
-
В Quick Open введите и нажмите клавишу ВВОД.
-
На боковой панели открывается представление Расширения. Выберите расширение PowerShell корпорации Майкрософт.
Откроется примерно следующий экран Visual Studio Code: -
Нажмите кнопку Установить для расширения PowerShell корпорации Майкрософт.
-
После установки кнопка Установить изменяется на Reload (Перезагрузить). Нажмите кнопку Reload (Перезагрузить).
-
После перезагрузки Visual Studio Code можно приступать к редактированию.
-
Например, чтобы создать файл, выберите Файл > Создать. Чтобы сохранить его, выберите Файл > Сохранить и укажите имя файла, например . Чтобы закрыть файл, щелкните рядом с его именем. Чтобы завершить работу с Visual Studio Code, выберите элементы Файл > Выйти.
Установка расширения PowerShell в системах с ограниченным доступом
Некоторые системы настроены так, что требуют проверки всех подписей кода. Может появиться следующее сообщение об ошибке:
Эта проблема может возникать, когда политика выполнения PowerShell задается групповой политикой Windows. Чтобы вручную утвердить службы редактора PowerShell и, следовательно, расширение PowerShell для Visual Studio Code, откройте командную строку PowerShell и выполните следующую команду:
Вы увидите подсказку Не удается проверить издателя. Вы действительно хотите запустить эту программу? Введите для запуска файла. Затем откройте Visual Studio Code и убедитесь, что расширение PowerShell работает правильно. Если у вас все еще есть проблемы с началом работы, сообщите нам об этом на Раздел с описанием проблем на GitHub.
Примечание
Расширение PowerShell для Visual Studio Code не поддерживает запуск в ограниченном языковом режиме. Дополнительные сведения см. в описании ошибки № 606 на GitHub.
Выбор версии PowerShell для использования с расширением
Благодаря одновременной установке PowerShell Core и Windows PowerShell теперь можно использовать определенную версию PowerShell с расширением PowerShell. Этот компонент проверяет несколько известных расположений в разных операционных системах, чтобы найти установки PowerShell.
Выберите версию, сделав следующее:
- Откройте палитру команд в Windows и Linux (CTRL+SHIFT+P). В macOS нажмите клавиши CMD+SHIFT+P.
- Выполните поиск по слову Сеанс.
- Щелкните PowerShell: Show Session Menu (PowerShell: показать меню сеансов).
- Выберите версию PowerShell, которую хотите использовать, из списка, например PowerShell Core.
Если вы установили PowerShell в нетипичном расположении, оно может первоначально не отобразиться в меню сеансов. Вы можете расширить меню сеансов, , как описано ниже.
Примечание
Меню сеансов PowerShell также можно открыть, щелкнув номер версии, который показан зеленым шрифтом в правом нижнем углу строки состояния.
Чтения файла под другим пользователем
В этом командлете не предусмотрена возможность открытия файла под другим пользователем. При любых попытках вы будете получать ошибки:
- Access to the path is denied
- The FileSystem provider supports credentials only on the New-PSDrive cmdlet. Perform the operation again withoutspecifying credentials.
Для обхода этих ошибок, если у вас нет другого выхода, нужно использовать Invoke-Command (команда удаленного подключения). Для ее настройки могут потребоваться дополнительные настройки описанные в другой статье.
Сам процесс открытия файла под другим пользователем будет выглядеть так:
Немного о PowerShell для Windows 10
Консоль PowerShell представляет собой средство для оптимизации работы операционной системы, обработки скриптов и выполнения команд. На данный момент среда отладки использует в качестве основного движка Net.Core, что обеспечивает быстрый доступ пользователей к удаленным системам.
PowerShell — главная среда по обработке команд
Возможности PowerShell:
- удаленный доступ к другим системам. Администратор может запустить выполнение сценариев в PowerShell с помощью команд на удаленной машине. При этом утилита предоставит пользователю подробный отчет о выполнении сценария и состоянии системы;
- работа в фоновом режиме. В PowerShell Windows 10 реализована функция последовательного вызова команд. Выполнение скриптов в фоновом режиме можно запустить на удаленной системе без дополнительных разрешений;
- группы последовательных транзакций. Разработчики программного обеспечения могут совершать последовательные команды с базой данных;
- конвейер. Пользователи могут последовательно вызвать несколько командлетов «BeginProcessing», «ProcessRecord» и «EndProcessing»;
- открытые модули. Администратор может выполнять сценарии в PowerShell и помещать исполняемый код в самостоятельный модуль. Код будет выполняться исключительно автономно, не влияя на окружение. Самостоятельный модуль может содержать в себе скрытие и открытые переменные;
- отладка скриптов. Пользователи могут при выполнении самостоятельного сценария поставить точки прерывания. Точку прерывания можно поставить при выполнении команд, когда идет запись переменных;
- новая среда выполнения скриптов. Встроенный модуль отладчика теперь имеет графический интерфейс для отображения команд. Новая среда поможет владельцам персональных компьютеров запустить несколько консолей отладки и с полной поддержкой юникода.
Запуск и отладка скриптов в Повер Шелл
Известные проблемы и их решенияKnown issues and workarounds
Проблема. известная ошибка в политиках безопасности PowerShell вызывает следующие проблемы манифеста в удаленном сеансе:ISSUE: A known bug in PowerShell security policies causes the following issues to manifest within the remote session:
- Командлет Get-Help возвращает непредвиденные совпадения.Get-Help returns unexpected matches.
- Get-Command для указанного модуля возвращает пустой список команд.Get-Command on a specified module returns an empty command list.
- Выполнение командлета из любого из этих модулей вызывает исключение Комманднотфаундексцептион: appx, NetAdapter, NetSecurity, Нетткпип, код устройства PnP.Running a cmdlet from any of these modules throws CommandNotFoundException: Appx, NetAdapter, NetSecurity, NetTCPIP, PnpDevice.
- Import-Module в любом из перечисленных выше модулей вызывает исключение Пссекуритексцептион с Унаусоризедакцесс.Import-Module on any of the above modules throws PSSecurityException exception with UnauthorizedAccess. Автоматическая загрузка модуля не работает.Module auto loading does not seem to work either.
Решение. Измените политику выполнения в удаленном сеансе PowerShell на RemoteSigned.Workaround: Modify the execution policy within the remote PowerShell session to RemoteSigned. Дополнительные сведения о различных политиках выполнения см. в разделе Использование командлета Set-ExecutionPolicy.For more details on the different execution policies, see Using the Set-ExecutionPolicy Cmdlet.
Проблема. командлеты из некоторых модулей, например NetAdapter, иногда не видны.ISSUE: Cmdlets from some modules such as NetAdapter are sometimes not visible. Например, командлет Get-Module NetAdapter возвращает пустой список.For example, Get-Module NetAdapter returns an empty list.
Обходное решение. Используйте параметр-Force с командлетом Import-Module.Workaround: Use the -Force parameter with Import-Module. Например, .For example, .
Ошибка. при задании для политики выполнения значения «AllSigned» удаленное взаимодействие PowerShell прекращается.ISSUE: Setting execution policy to «AllSigned» breaks PowerShell remoting. Последующие попытки создания удаленного сеанса завершаются ошибкой с помощью SecurityException Load Typesv3. ps1xml.Subsequent attempts to create a remote session fail with a SecurityException loading Typesv3.ps1xml.
Обходное решение. Используйте WinRS. exe для восстановления политики выполнения PowerShell:Workaround: Use winrs.exe to restore PowerShell’s execution policy:
- Изменить кодовую страницу консолиChange console code page
- Вход в удаленную оболочку cmd. exe Log on to a remote cmd.exe shell
- В удаленном cmd. exe измените соответствующий раздел реестра Within remote cmd.exe, modify the appropriate registry key
- Выход из удаленного сеанса cmd. exe Exit remote cmd.exe session
Другие известные проблемыOther known issues
-
В скриптах PowerShell атрибуты для класса или перечисления PowerShell не работают.In PowerShell scripts, attributes to PowerShell class or enumeration do not work. Добавление результатов с атрибутами в следующем вызываемом исключении: тип должен быть объектом типа среды выполнения.Adding attributed results in the following exception thrown: Type must be a runtime Type object.
-
Исходящее удаленное взаимодействие CIM и PowerShell не поддерживается.Outbound CIM and PowerShell remoting is not supported. Соответствующие функции в командлетах, связанных с проверяющей стороной, не будут работать.Relevant functionality in relying cmdlets will not work. К ним относятся ввод-PSSession, Get-Job, Receive-Job, Import-Module, Invoke-Command и Copy-Item.These include Enter-PSSession, Get-Job, Receive-Job, Import-Module, Invoke-Command, and Copy-Item.
-
Команды SecureString ConvertFrom-SecureString и ConvertTo-SecureString не работают, если сеанс не создан с помощью проверки подлинности CredSSP.SecureString commands ConvertFrom-SecureString and ConvertTo-SecureString do not work unless the session is created using CredSSP authentication. В противном случае необходимо указать параметр-key.Otherwise, the -Key parameter must be specified. Дополнительные сведения о настройке проверки подлинности CredSSP см. в статье Включение функции второго прыжка PowerShell с помощью CredSSP.For details on configuring CredSSP authentication, see Enable PowerShell “Second-Hop” Functionality with CredSSP.
Основные команды для PowerShell
В программе поддерживается огромное количество команд, применяемых к различным компонентам операционной системы Windows 10. Хорошо что есть возможность получить справку о любой команде непосредственно в окне программы Windows PowerShell. Это поможет разобраться с основными командами и принципами работы в новой среде.
- Get-Help — отображение справочных сведений о командлетах и основных понятиях. В справке описываются командлеты, функции, сценарии и модули, а также объясняются основные понятия, в том числе элементы языка Windows PowerShell.
- Update-Help — загрузка и установка файлов справки с общей папки или Интернета. После обновлений операционной системы может понадобиться обновление справки — обнаружение, скачивание и установка обновлений для модулей.
- Get-Command — вывод всех доступных функций и командлетов, с авто заполнением строки. Выбрав интересующую команду, выполните её с Get-Help для быстрого получения справки. Например, ознакомится с Get-Help Remove-AppxPackage.
Заключение
На самом деле Windows PowerShell — это очень полезная программа, которая не раз экономила нам время. Множество инструкций писались на примерах с её использованием. Но даже половина возможностей обновлённой оболочки не была задействована. О работе в ней можно написать значительно больше. Но благодаря основным командам можно ознакомиться со всеми возможностями программы.
Как открыть PowerShell на Windows 10: возможные способы
Многие пользователи спрашивают, как открыть PowerShell в Windows 10. Владельцы персональных компьютеров могут открывать консоль несколькими способами:
- через стартовое меню «Пуск»;
- через утилиту «Выполнить»;
- с помощью комбинации клавиш;
- через системную папку;
- через командную строку.
Через стартовое меню «Пуск»
Инструкция:
- Необходимо на панели задач щелкнуть по кнопке стартового окна.
- Далее в поисковой строке ввести ключевой запрос.
- В завершении появится список программного обеспечения, подходящего под параметры поиска.
Второй способ:
- Нужно щелкнуть ПКМ по иконке стартового меню.
- На экране появится диалоговое окно.
- В данном списке требуется найти пункт «Windows PowerShell».
Открыть консоль можно через поисковую строку или с помощью контекстного меню параметров
С помощью утилиты «Выполнить»
Инструкция:
- Требуется открыть утилиту «Выполнить», нажав сочетание клавиш «Win + R».
- В поисковой строке нужно прописать имя программы и нажать на кнопку «Enter»
С помощью комбинации клавиш
Инструкция:
- На клавиатуре требуется нажать комбинацию клавиш «Win + X».
- На экране появится консоль отладки.
К сведению! В версиях Windows 10 1903 (и более ранние) при нажатии клавиш «Win + X» появляется окно командной строки. В билде 2004 вместо нее запускается основная консоль PowerShell.
Через системную папку
Если нужна консоль PowerShell, где находится Windows 10 она, знает далеко не каждый пользователь. Как ее открыть:
- Нужно перейти в проводник и открыть раздел «Локальные диски».
- На основном томе следует отыскать папку «Windows».
- Затем следует перейти в директорию «System32».
- В данном каталоге следует прокрутить список вниз и найти папку с наименованием «Windows PS».
- Далее необходимо найти исполняемый файл программного обеспечения, который имеет расширение *exe.
- По объекту нужно щелкнуть ПКМ и в диалоговом окне выбрать «Запуск с расширенными правами доступа».
С помощью командной строки
Инструкция:
- На клавиатуре требуется нажать сочетание клавиш «Win + R».
- В поисковой строке ввести ключевой запрос «CMD».
- После запуска командной строки следует прописать код «PowerShell».
Когда запуск консоли производится через CMD, то PowerShell будет использовать текстовый интерфейс командной строки
Версии Windows PowerShell
Данное средство было разработано в 2006 г. С тех пор оснастка сильно усовершенствовалось, выходило всё больше версий, в которых исправлялись имеющиеся дефекты.
Рассматриваемый инструмент доступен для скачивания для всех операционных систем семейства Windows. Однако на некоторых из них средство уже установлено по умолчанию, только в не самой последней версии. А самая новая — это версия PowerShell 6.2, вышедшая в 2018 г.
Обратите внимание! Скрипты PowerShell, которые были прописаны в более свежих версиях программы, не запустятся на ранних. А вот с обратным процессом проблем возникать не должно
Получение данных
Для открытия файла ‘C:\text.txt’ можно использовать следующую команду:
Если у вас множество файлов или вы не уверены в назывании, то вы можете использовать подстановку. Символы подстановок бывают следующих типов:
- ‘*’ — говорит об неизвестном количестве символов;
- — говорит, что в этом месте может быть буква ‘a’ или ‘b’;
- ? — обозначает один неизвестный символ.
Каждый из символов выше можно применять вместе и неограниченное число раз, в любой части пути и имени.
В этом примере я открою сразу два файла: lmhosts и hosts:
Следующие примеры вернут аналогичный результат:
Для похожей фильтрации есть следующие параметры, которые так же позволяют использовать символы подстановок:
- Include — в этом параметре мы добавляем шаблон, по которому будем включать файл;
- Exclude — с помощью этого параметра исключает файлы;
- Filter — исключает результаты.
Для каждого из этих параметров есть обязательно условие — использовать знак ‘*’ в конце пути.
Так мы вернем все файлы с расширением ‘.txt’:
В отличие от Filter, в Include и Exclude мы можем использовать несколько значений. В этом примере мы откроем файлы формата ‘.txt’ и ‘.ini’:
Полное и построчное чтение с поиском
По умолчанию, если мы будем передавать результат команды через конвейер Powershell вывод будет построчный. Это может составить проблему, так как при дополнительных условиях у нас будет возвращаться одна строка, а не весь текст:
Что бы текст передавался полностью, а не построчно — используйте параметр Raw:
Если вам вдруг понадобится выводить по 2 или более строк за раз, можно указать их количество через ReadCount:
Разделение файла
Файл выводится построчно из-за делиметра (разделителя), который по умолчанию равен ‘\n’ (идентификатор новой строки). Мы можем разделить файл иначе, например, использовав точку с запятой:
То есть результат выше — это массив. В массивах Powershell мы можем получать содержимое по индексам. В следующем примере я просто уберу точку с запятой:
Подсчет количества строк
Построчный вывод с командой Powershell позволяет посчитать количество строк во всем файле. Для подсчета используется команда Measure-Object:
Если нужна только цифра, а не объект, можно сделать так:
Кодировки
В параметре -Encoding можно указать следующие кодировки:
- ASCII
- BigEndianUnicode
- BigEndianUTF32
- Byte
- Default
- OEM
- Unicode
- UTF7
- UTF8
- UTF32
Вам так же будет интересно:
Что делать, если PowerShell не открывается
Если PowerShell не может открыться, то нужно проверить целостность системных файлов:
- Необходимо запустить командную строку с расширенными правами доступа.
- Затем прописать исполнимую команду «sfc /scannow».
- Дождаться завершения процесса проверки файлов.
- При необходимости исправить поврежденные компоненты, нажав на кнопку «Enter».
Выполнить отключение компонента PowerShell и заново его активировать:
- Нужно открыть классическую панель управления.
- Выбрать раздел «Программное обеспечение».
- В правой части окна нажать «Включить или отключить компоненты».
- В списке найти нужный объект и снять с него отметку в чекбоксе.
- Выполнить рестарт и вновь перейти в «Панель управления». Открыть компоненты Windows и поставить отметку в чекбоксе «PowerShell».
Повер Шелл может не запускаться из-за повреждения системных файлов
Консоль отладки PowerShell скачать для Windows 10 можно на официальном сайте разработчиков программного обеспечения. Открыть утилиту возможно через стартовое меню или выполнить ручной запуск из системной папки. Если PowerShell перестал открываться, нужно произвести сканирование системы и выявить поврежденные файлы. Все инструкции предельно просты, поэтому с ними справится даже новичок.
Шаг 3: установка файлов помощи
Команды вроде cd и dir не являются активными командами оболочки PowerShell. Это так называемые псевдонимы (aliases) — замены настоящих команд PowerShell. Псевдонимы удобны для тех, кто имеет большой опыт работы с командной строкой. Однако они не затрагивают глубин PowerShell.
Чтобы начать знакомиться с возможностями PowerShell, наберите help и нужную вам команду. На скриншоте показана команда help dir.
Команда help говорит, что dir является псевдонимом команды PowerShell Get-ChildItem. Если набрать get-childitem в PS C:\>, увидите то же самое, что и при использовании команды dir.
Как указано внизу скриншота, файлы помощи для PowerShell не устанавливаются автоматически. Для их получения запустите PowerShell от имени администратора и наберите update-help. Установка файлов помощи займёт несколько минут, ряд модулей могут отсутствовать — например, в данном случае не установились Help for NetWNV и SecureBoot. Когда всё готово, полная система помощи всегда будет давать нужные подсказки.
Теперь наберите команду get-help и любую интересующую вас команду («cmdlet» на языке PowerShell, по-русски командлеты), будет показано её описание. Например, get-help get-childitem выдаёт список опций get-childitem. Также можно вывести разные возможные варианты. Например
get-help get-childitem -examples
выдает семь подробных примеров использования get-childitem. Команда
get-help get-childitem -detailed
включает в себя эти семь примеров и подробные разъяснения каждого параметра в командлете get-childitem.
Шаг 7: анализ полезных команд PowerShell
К настоящему времени вы уже знаете достаточно много, чтобы суметь нанести урон компьютеру, так что будьте осторожны. Посмотрим, например, часто запрашиваемые команды PowerShell.
Эти команды работают только в Windows 10 и только при запуске PowerShell от лица администратора. Они предназначены для переустановки предустановленных приложений Windows 10 и могут пригодиться тем, кто сначала удалил эти программы, а затем решил вернуть их. Команды выглядит следующим образом:
Get-AppXPackage | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “$($_.InstallLocation)\AppXManifest.xml”}
Если запустить эту команду, игнорируйте обозначенные красным цветом предупреждения, и когда команда выполнена, перезагрузите компьютер; все предустановленные программы в Windows 10 появятся на своих местах.
Вот как работает данная команда. Get-AppXPackage проверяет все пакеты приложений в профиле пользователя. Даже если вы удалили приложение, оно остается в списке профиля пользователя.
Командлета Get-AppXPackage возвращает объект TypeName Microsoft.Windows.Appx.PackageManager.Commands.AppxPackage, который включает в себя полное имя пакета приложения и местонахождения соответствующего файла манифеста XML. Если запустить командлету get-appxpackage, вы увидите длинный список пакетов приложений. Скриншот показывает описание приложения Xbox.
Командлета Foreach посредством цикла проходит через каждый объект в AppXPackage, отправляя их командлету Add-AppxPackage. Согласно get-help для Add-AppxPackage, тут есть два ключевых переключателя:
- Переключатель -Register используется для регистрации существующих установок пакетов приложений, можно задать параметры DisableDevelopmentMode и Register
- Переключатель -DisableDevelopmentMode говорит Windows заново зарегистрировать существующий пакет приложения, который был отключён, не зарегистрирован или повреждён.
Строка «$($_.InstallLocation)\AppXManifest.xml» описывает, где расположен файл manifest.xml. Если посмотреть на файлы AppXManifest.xml, вы увидите сложный список идентификаторов приложений, исполняемых файлов и большое количество визуальных элементов, связанных с приложением.
После перезагрузки все добавленные пакеты приложений скачиваются и устанавливаются из магазина Windows Store.
- 5
- 4
- 3
- 2
- 1
(4 голоса, в среднем: 3 из 5)