Как запустить PowerShell в Windows 7 или Windows 10

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

Как открыть PowerShell?

Это можно сделать несколькими следующими способами:

Как открыть PowerShell?
  • — вы найдёте приложение в общем списке компонентов под буквой W.
  • При помощи поиска в Панели задач — откройте её, и введите слово PowerShell для поиска.
  • Используя меню «Выполнить» — запустите его через комбинацию Win+R и напишите название утилиты, после чего она будет найдена в системе.
  • В коммандере задайте действие PowerShell — но, вы должны знать, что будете работать с приложением через уже запущенную строку, а не в отдельном окне.
  • В параметрах Windows выберите «Свойства панели задач» и меню «Пуск». Во вкладке «Навигация» поставьте флажок на строке «Заменить командную строку оболочкой PowerShell…». Теперь вы сможете включать утилиту комбинацией Win+X.

Как запустить PowerShell в папке

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

Как запустить PowerShell в папке

В операционной системе Windows 7 вы можете запустить PowerShell в папке при помощи адресной строки. Для этого откройте нужную папку и введите в адресную строку команду «powershell».

Как запустить PowerShell в папке

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

Как запустить PowerShell в папке

Кстати, таким образом вы можете запускать и стандартную командную строку, но в этом случае нужно вводить «cmd».

— Сменить/Задать пароль учётной записи

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

Так же как и при создании учётной записи с паролем, для начала нужно присвоить переменной $UserPassword значение[наш пароль] введенное в безопасной строке. Здесь для примера, мы использовали другой способ ввода пароля, но вы можете использовать и тот, который показан в пункте — 2.2 — Создание учётной записи с паролем

$UserPassword = Read-Host –AsSecureString

- Сменить/Задать пароль учётной записи

После ввода команды, мы вводим пароль, а далее воспользуемся командлетом Set-LocalUser [изменить локальную учётную запись] с параметром -Password.

Set-LocalUser -Name «ПОЛЬЗОВАТЕЛЬ» -Password $UserPassword

В моём случае, я меняю пароль пользователю — firstdeer.[указал -Verbose для вывода сообщения «ПОДРОБНО:…«](Рис.8):

Set-LocalUser -Name «firstdeer» -Password $UserPasswordVerboseРис.8 — Смена пароля пользователю.

- Сменить/Задать пароль учётной записи

Вот и всё, пароль сменён.

Читайте также:  Не найден необходимый драйвер носителя при установке Windows 10

Как запустить скрипт PowerShell в Windows

Как запустить скрипт PowerShell в Windows-01

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

Не удается загрузить файл , так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений.

Смотрим как ее решить.

Как запустить скрипт PowerShell в Windows-02

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

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

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

Удаленные подписанные (Remote Signed): Локальные скрипты работают без подписи. Все скачанные скрипты должны иметь цифровую подпись.

Неограниченный (Unrestricted): Все скрипты и файлы конфигурации, полученные из коммуникационных приложений, вроде Microsoft Outlook, Internet Explorer, Outlook Express и Windows Messenger работают после подтверждения, что вы понимаете, что файл исходит из Интернета; никакие цифровые подписи не требуются; данный режим подвергает вас риску работу неподписанных, вредоносных скриптов.

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

Разрешить выполнение скриптов powershell

Чтобы запускать созданные собою скрипты, необходимо разрешить выполнение ненадежных скриптов с помощью команды Set-ExecutionPolicy remotesigned и подтверждением (Внимание!!! для выполнения этой команды необходимо запустить PowerShell с правами администратора). После этого можно вновь запустить выполнения скрипта.

Как запустить скрипт PowerShell в Windows-03

На вопрос жмем Y, для разрешения выполнения скриптов. После этих манипуляций вы сможете запустить ваш скрипт.

Как запустить скрипт PowerShell по расписанию

Как запустить скрипт PowerShell в Windows

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

Я приведу пример, когда мне нужно было отслеживать события ID 20291 или ID 11707.  И так откройте окно выполнить и введите в нем:

Далее вы щелкаете по библиотеке правым кликом и из контекстного меню выбираете пункт «Создать задачу«.

Задаете имя задания, советую запускать скрипт PowerShell от имени учетной записи «СИСТЕМА (SYSTEM)«, это будет гарантировать, что задание точно отработает.

Поставьте галку «Выполнять с наивысшими правами»

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

Далее задаем:

  • Журнал — Приложение
  • Источник — MsiInstaller
  • Код события — 11707
Читайте также:  Как удалить программы в windows 8 с глаз долой — из сердца вон?

Тут тригер будет срабатывать, когда в логах появится событие 11707.

В действие оставляем «Запуск программы». В программе указываем powershell, а в параметрах задайте путь до самого скрипта, через параметр -File c:\scripts\.

В итоге у меня вышло вот так.

Как видим, мое задание по запуску скрипта PowerShell успешно создано и отработало в планировщике Windows.

Запуск скрипта PowerShell через исполняемый файл exe

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

На этом у меня все, мы разобрали методы запуска скриптов PowerShell в Windows, с вами был Иван Семин. Материал сайта 

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

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

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 (). Это значение так же объявляет параметры. На предыдущем примере это значение использовалось бы так:

Читайте также:  Windows 7: Как войти в систему под Администратором

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.

Доступ к системному журналу

При попытке обнаружения причин сбоев мы часто обращаемся к системному журналу, в котором хранится множество полезной информации о событиях, происходивших в системе. Обычно для исследования системного журнала применяется утилита Event Viewer (). В PowerShell мы можем воспользоваться встроенными командами, например командой get-eventlog , для быстрого исследования содержимого системного журнала (рис. 16).

Наша первая команда загружает ключевую информацию из системного журнала:

PS C:\> get-eventlog –list

Без использования опции –list PowerShell запросит точное указание названия системного журнала. В нашем примере мы видим несколько точек входа в системном журнале: Application, Internet Explorer, System, Windows Power Shell и т.п. Наша следующая команда извлекает записи из системного журнала, которые имеют тип “Error” :

Доступ к системному журналу

PS C:\> $bad = get-eventlog “System” | where-object { $_.EntryType –eq “Error” }

Мы используем команду get-eventlog , которой указываем параметр “System” для извлечения только системных записей, — мы могли бы более четко задать это, применив параметр logName . Содержимое переменной $bad передается на вход команде where-object для фильтрации только интересующих нас записей. В качестве аргументов команды where-object мы указываем на то, что ищем только записи, у которых свойство EntryType равно “Error” .

Мы завершаем исследование системного журнала выводом на экран пяти последних записей об ошибках, используя для этого команду select-object с параметром –last :

PS C:\> $bad | select-object –last 5