About_environment_variables

PS1 to EXE

Менее популярный проект, который уже около 2 лет не поддерживается и является редактором кода с возможностью конвертации. На официальном сайте и Github скачать программу нельзя и ее нужно искать по сайтам. Достаточно много минусов, что бы пользоваться этой программой в последнюю очередь.

Консоль

После установки файл, для запуска консоли, находится в одной из следующих папок:

Консольный вариант команды не несет принципов Powershell в наименовании ключей. «PS1 to exe» использует стиль CMD. Пример создания exe файла без показа консоли:

Параметр /include добавляет в exe дополнительные файлы и папки.

Вывод справки:

GUI

Графический интерфейс программы имеет так же встроенный редактор кода. После открытия файла мы увидим следующую картинку:

Где:

  1. Файл, который будет добавлен в exe;
  2. Дополнительные настройки для конвертации;
  3. Выбор дополнительных файлов, если вы планировали их включить;
  4. Конвертация в exe.

Как установить PowerShell с пакетом MSI

PowerShell 7 доступен для Windows, macOS и Linux. Мы покажем вам, как установить его на Windows 10.

Первый метод, который мы рассмотрим, использует MSI-файл для установки PowerShell. Пакеты MSI работают почти идентично файлу EXE и позволяют устанавливать программу с использованием графического интерфейса пользователя. Это метод установки, который использует только необходимые и ключевые файлы. Все, что вам нужно сделать, — это дважды щёлкнуть по файлу, чтобы запустить мастер установки.

Примечание. PowerShell 7 устанавливается и работает параллельно с Windows PowerShell 5.1, которая поставляется с Windows 10, но заменяет PowerShell Core 6.x. Если вам нужно запустить PowerShell 6 параллельно с PowerShell 7, вам необходимо установить его через ZIP-пакет.

Чтобы загрузить пакет, запустите браузер и перейдите на страницу релизов PowerShell Github. Прокрутите вниз до раздела «Assets» и найдите там файл MSI (PowerShell-*), чтобы загрузить его.

Обязательно выберите правильный пакет для вашей версии Windows, x64 для 64-разрядных или x86 для 32-разрядных систем.

При появлении запроса выберите место для загрузки и нажмите «Сохранить», чтобы начать загрузку.

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

Полезные ресурсы

Существует несколько видео и записей блогов, которые могут оказаться полезными при начале работы с расширением PowerShell для VS Code:

Видео

  • Использование Visual Studio Code в качестве редактора PowerShell по умолчанию
  • Visual Studio Code: подробный обзор отладки сценариев PowerShell

Записи блога

  • Расширение PowerShell
  • Написание и отладка в сценариев PowerShell в Visual Studio Code
  • Руководство по отладке Visual Studio Code
  • Отладка PowerShell в Visual Studio Code
  • Приступая к разработке PowerShell в Visual Studio Code
  • Функции редактирования Visual Studio Code для разработки PowerShell. Часть 1
  • Функции редактирования Visual Studio Code для разработки PowerShell. Часть 2
  • Отладка сценария PowerShell в Visual Studio Code. Часть 1
  • Отладка сценария PowerShell в Visual Studio Code. Часть 2

Имена функций

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

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

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

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

Создание самозаверяющего сертификата.

Чтобы создать самозаверяющий сертификат, используйте командлет New-SelfSignedCertificate в модуле PKI. этот модуль появился в PowerShell 3,0 и входит в Windows 8 и Windows Server 2012. Дополнительные сведения см. в разделе справки по командлету.

Использование Makecert.exe

чтобы создать самозаверяющий сертификат в более ранних версиях Windows, используйте средство создания сертификатов . это средство входит в состав пакета SDK для Microsoft .NET (версии 1,1 и более поздних) и в Microsoft Windows SDK.

Дополнительные сведения о синтаксисе и описаниях параметров средства см. в разделе средство создания сертификатов (MakeCert.exe).

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

Примечание

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

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

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

В командной строке PowerShell введите следующее:

Эта команда использует поставщик сертификата PowerShell для просмотра сведений о сертификате.

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

Политики выполнения PowerShell

Ниже перечислены политики выполнения PowerShell.

AllSigned

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

Bypass

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

RemoteSigned

  • политика выполнения по умолчанию для компьютеров Windows server.
  • Сценарии могут выполняться.
  • Требуется цифровая подпись от доверенного издателя для сценариев и файлов конфигурации, загружаемых из Интернета, которые включают программы электронной почты и мгновенные сообщения.
  • Не требует цифровых подписей для сценариев, которые записываются на локальном компьютере и не загружаются из Интернета.
  • Запускает скрипты, скачанные из Интернета и не подписанные, если скрипты разблокированы, например с помощью командлета.
  • Риски запуска неподписанных скриптов из источников, отличных от Интернета, и подписанных сценариев, которые могут быть вредоносными.

Restricted

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

Undefined

  • В текущей области не задана политика выполнения.
  • если политика выполнения во всех областях имеет значение Undefined , то действующая политика выполнения предназначена Restricted для Windows клиентов и RemoteSigned для Windows Server.

Unrestricted

  • Неподписанные скрипты могут выполняться. Существует риск запуска вредоносных сценариев.
  • Предупреждает пользователя перед запуском скриптов и файлов конфигурации, которые не входят в зону местной интрасети.

Примечание

В системах, которые не отличают пути UNC от Интернет-путей, сценарии, определяемые путем UNC, могут быть запрещены для выполнения с политикой выполнения RemoteSigned .

Запуск PowerShell от имени другого пользователя

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

Чтобы запустить PowerShell от имени другого пользователя вам необходимо зажать кнопку SHIFT, после чего щелкнуть правым кликом мыши по значку PowerShell, из контекстного меню выбрать пункт «Запуск от имени другого пользователя»

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

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

start powershell -credential «»

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

Политика выполнения

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

Версия операционной системы Windows Политика выполнения по умолчанию
Server 2019 Удаленно подписанная
Server 2016 Удаленно подписанная
Windows 10 С ограниченным доступом

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

Проверка текущей политики выполнения

Если для политики выполнения задано С ограниченным доступом, сценарии PowerShell вообще не запускаются. Это параметр по умолчанию для всех клиентских операционных систем Windows. Чтобы продемонстрировать проблему, сохраните следующий код как файл с именем .

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

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

Измените политику выполнения PowerShell на удаленно подписанную.

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

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

Прежде чем продолжить, запустите службу времени Windows. В противном случае могут возникнуть непредвиденные проблемы.

Особенности запуска скриптов в PowerShell

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

Powershell Studio

Еще один способ создать exe это использовать Powershell Studion. Эта программа — крупный IDE, который разрабатывался специально под Powershell и, конечно, он является платным (45 дней trial).

После открытия файла в IDE нужно открыть настройки пакетов:

В главном окне вы должны выбрать интерпретатор для выполнения сценария Powershell. Скорее всего вам нужен будет ‘Windows Powershell’, а не более старшие версии, так как они не устанавливаются по умолчанию в Windows:

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

У Powershell Studio есть много преимуществ. Например он может подписывать конвертированные файлы вашим сертификатом — такой возможности, в других программах, нет.

Если драйвера нет на сайте

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

Далее выбираем вкладку «Сведения» и в появившейся строке выбираем пункт «ИД оборудования». В окне появится набор букв и цифр. Этот самый шифр вводим в строку поиска Google, и умный поисковик выдает драйвер именно для нашего устройства. Теперь остается только скачать и установить программное обеспечение.

Но иногда и это не помогает. Значит, самое время перейти к следующему пункту инструкции «Как найти драйвер для неизвестного устройства».

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

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

Писать скрипты в самом приложении можно так:

  • Запустите его.
  • Нажмите на пункт «Создать».
  • Или кликните на «Файл», и в появившемся списке выберите «Создать».
  • Напишите все команды, которые нужно выполнить, сохраните файл.

Скрипты ещё можно писать и редактировать в FAR Manager, но их нельзя использовать непосредственно в таком приложении, ведь оно отображает файлы этого типа через стандартную строку cmd. Однако прочие действия выполняются таким же образом, как и в «родной» утилите.

Запустить скрипт вы сможете таким образом:

  1. Зайдите в PowerShell от имени администратора.
  2. При помощи команд cd укажите месторасположение требуемого файла. Например, e: cd\ cd work .\ имя_файла. Ps1, или e: \work\ имя_файла.ps1
  3. В этом случае e: — имя жёсткого диска, где находится файл.
  4. Жмите Enter.

Программа обязательно покажет вам сообщение с текстом «Не удаётся загрузить файл ___ .Ps1, так как выполнение скриптов запрещено для этой системы…», когда вы будете первый раз запускать команду. Дело в том, что Windows оснащён защитой от вмешательства благодаря разработчикам, поэтому никто из пользователей по умолчанию не имеет доступа на выполнение таких действий. Но, это ограничение можно очень просто обойти.

Как? В тексте, возникающем вместе с ошибкой, будет рекомендация ввести команду get-help about_signing, чтобы получить больше информации. Вы можете выполнить эти указания, или использовать комбинацию Set-ExecutionPolicy remotesigned — после её ввода потребуется подтверждение, и ограничение будет снято.

Как удалить PowerShell в Windows 10

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

  1. Удалите как любое другое приложение
  2. Удалить с помощью функций Windows
  3. Отключить PowerShell с помощью DISM

Вы можете использовать любой из этих методов для удаления PowerShell.

1]Удалите его, как любое другое приложение.

Как и другие программы, PowerShell можно легко удалить.

Введите PowerShell в поле поиска меню «Пуск». Он покажет все версии PowerShell, то есть PowerShell (x86), PowerShell, PowerShell 7 и другие. Щелкните правой кнопкой мыши любой из них и выберите Удалить. Вы также можете развернуть меню и удалить его.

Единственная версия, которую нельзя удалить, — это PowerShell ISE, также известная как интегрированная среда сценариев Windows PowerShell. Это полезно для разработчиков, которые могут запускать команды и писать, тестировать и отлаживать сценарии в едином графическом пользовательском интерфейсе на основе Windows.

2]Удаление с помощью программы и функций

  • Тип Контроль в командной строке (Win + R) и нажмите клавишу Enter.
  • Найдите и нажмите «Программы и компоненты».
  • Затем нажмите ссылку «Включить или отключить функцию Windows» на левой панели.
  • Найдите и снимите флажок PowerShell 2.0 в раскрывающемся списке программ.
  • Нажмите ОК и дайте программе завершить процесс удаления PowerShell.

3]Отключить PowerShell с помощью DISM

Откройте командную строку с повышенными привилегиями, набрав CMD в строке «Выполнить» (Win + R), а затем нажав Shift + Enter. После запуска введите и выполните команду для проверки.

DISM /online /get-features /format:table | find "MicrosoftWindowsPowerShellV2Root"

Если там написано «Включить», введите следующую команду, чтобы отключить его.

Dism /online /Disable-Feature /FeatureName:"MicrosoftWindowsPowerShellV2Root"

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

Dism /online /Enable-Feature /FeatureName:"MicrosoftWindowsPowerShellV2Root"

Вот и все.

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

Надеюсь, этот пост помог вам удалить PowerShell с вашего ПК с Windows 10.

Теги: PowerShell, Удалить

Создание

Представим, что каждое утро вы проверяете 50 последних логов за 14 часов журнала Application с помощью этой команды:

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

Любая функция обязательно должна состоять из трех вещей:

  • function — объявляет и говорит что после нее будет название;
  • имя функции — название, по которому мы будем ее вызывать. В нашем случае имя Get-DayLog;
  • скобки — обозначают начало и конец выражения.

После написания функции она вызывается по имени:

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

политика выполнения в Windows server Core и windows Nano server

когда PowerShell 5,1 запускается на Windows server Core или Windows Nano server при определенных условиях, политики выполнения могут завершиться со следующей ошибкой:

PowerShell использует интерфейсы api в оболочке Windows Desktop Shell ( ) для проверки зоны файла скрипта. оболочка Windows недоступна в Windows server Core и Windows Nano server.

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

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

Дополнительные возможности работы с параметрами

Строгие типы данных

Powershell автоматически преобразует типы данных. В отличие от других языков результат этого выражения будет число 3, а не «111»:

Такой подход может привести к ошибке. Мы можем исправить это объявляя типы:

То есть объявляя типы данных мы либо получим ошибку избежав неверного преобразования. Если бы мы передавали такую строку «1», то у нас корректно выполнилось преобразование в число.

Таких типов данных в Powershell  всего 13:

  • — строка;
  • — 16-битовая строка Unicode;
  • — 8 битовый символ;
  • — целое 32 битовое число;
  • — целое 64 битовое число;
  • — булево значение True/False;
  • — 128 битовое число с плавающей точкой;
  • — 32 битовое число с плавающей точкой;
  • — 64 битовое число с плавающей точкой;
  • — тип данных даты и времени;
  • — объект xml;
  • — массив;
  • — хэш таблица.

Примеры работы с некоторыми типами данных вы увидите далее.

$args

В языках программирования есть понятие позиционного параметра. Это такие параметры, которые могут передаваться без имен:

Обратите внимание, что $args является массивом и значение получаются по индексу. Я не ставлю запятую при вызове функции так как в этом случае у меня был бы массив двойной вложенности

Обязательные параметры Mandatory

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

Первый вызов функции прошел успешно, так как мы передали параметры. Во втором случае мы не передаем значения, а значит переменная $item равна $null (неопределенному/неизвестному значению). Во многих языках, в таких случаях, у нас появилась бы ошибка еще в момент вызова функции Get-ItemCreationTime, а не во время выполнения Get-Item.

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

Атрибут Mandatory обязывает указывать значение. Если оно будет проигнорировано, то мы получим ошибку еще до момента выполнения функции.

Param()

Вы могли видеть функции, которые имеют значение Param(). Это значение так же объявляет параметры. На предыдущем примере это значение использовалось бы так:

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

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

Position говорит под каким номером передается значение.

Одно из преимуществ работы с param() в том, что у нас становятся доступны ключи типа -Confirm и -Verbose. 

CmdletBinding()

Использование этого атрибута позволяет расширять возможность по созданию командлетов. Microsoft пишет, что использование CmdletBinding или Parameter расширяет возможность функций в Powershell, но по моему опыту не всегда все срабатывает и нужно ставить оба атрибута.

На примере ниже я установил ограничение на длину строк с 1 по 13 символов с помощью ValidateLength(1,13). Position=1 говорит об индексе элемента в массиве:

Таких дополнительных аргументов для команд достаточно много. Для примера еще несколько атрибутов, которые можно добавить в блок parameter:

  • HelpMessage = «Текст»  — подсказка по использованию переменной. Это пояснение можно увидеть при запросе справки через Get-Help;
  • ParameterSetName=»Computer» — указывает к какой переменной относятся параметры;

Отдельные блоки типа :

  • — устанавливает алиас для этого параметра в виде буквы t;
  • — устанавливает значение по умолчанию переменной Test;
  • ] — такое использование говорит, что значение принимает массив строк
  • — позволяет обязательным параметрам быть $null
  • — позволяет обязательным параметрам быть пустой строкой
  • — обязательный параметр с пустым массивом
  • — минимальное и максимальное количество значений.
  • «)] — проверка на шаблон используя регулярного выражения

Больше примеров и аргументов на сайте Microsoft.