Написание и запуск скриптов в powershell

Содержание:

Передача через конвейер или Pipeline

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

Если мы захотим использовать подход описанный выше, создав новые команды в виде функций, то конвейер не будет работать:

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

Таких атрибутов всего два:

  • ValueFromPipelineByPropertyName — получение значения из конвейера по имени;
  • ValueFromPipeline — получение через конвейер только значения .

Кроме этого, внутри нашей функции, мы должны добавить специальный блок Process. Наш скрипт в итоге будет выглядеть так:

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

Если бы мы не указали блок Process функция бы вернула только последней результат из массива 1..5:

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

Как уже писалось ValueFromPipelineByPropertyName принимает только именованные параметры и в случае с именем «bad» мы получаем ошибку:

  • Не удается привязать объект ввода к любым параметрам команды, так как команда не принимает входные данные конвейера
  • The input object cannot be bound to any parameters for the command either because the command does not take pipeline input or the input and its properties do not match any of the parameters that take pipeline input.

Причем передавать именованные параметры через хэш таблицы мы не можем, только через pscustomobject.

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

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

Передача через конвейер нескольких значений

Для примера рассмотрим ситуацию, где нам нужно передать через конвейер два значения. Если Get-SomeNum будет возвращать массив, то через конвейер у нас будет проходить каждое число по отдельности. Это еще один повод использовать именованные параметры:

Get-Executionpolicy

Посмотреть текущие настройки политики во всех областях применения можно выполнив командлет Get-Executionpolicy с параметром list.

Пример:

PowerShell

get-executionpolicy -list

1 get-executionpolicy-list

Результат выполнения командлета:

Scope ExecutionPolicy
#8212;#8212; —————
MachinePolicy Unrestricted
UserPolicy Undefined
Process RemoteSigned
CurrentUser AllSigned
LocalMachine Restricted

Значения политики.

Данная политика может принимать 6 значений:

Restricted (Политика выполняется по умолчанию. Например если во всех областях применения стоит значение Undefined)
— Допускает отдельные команды, но скрипты выполнять нельзя.
— Препятствует выполнению всех файлов скриптов, включая файлы форматирования и конфигурации (PS1XML), файлы скриптов модулей (PSM1) и профили Windows PowerShell (PS1).

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

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

Unrestricted
— Могут выполняться неподписанные скрипты. (Имеется риск выполнения вредоносных скриптов.)
— Предупреждает пользователя перед выполнением скриптов и файлов конфигурации, загруженных из Интернета.

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

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

Области применения политики.

Областей применений пять:

MachinePolicy и UserPolicy задаются политиками AD или локальными политиками данного компьютера.Process — область применения текущая ссесия. В справке говорится, что её значение хранится в переменной $PSExecutionPolicyPreference однако получить/изменить значение данной политики через переменную не удалось. Измения сделанные на эту область применения ни как не повлияют на другие сессии.CurrentUser — область применения текущей пользователь. Её значение хранится в разделе реестра HKEY_CURRENT_USER («HKEY_CURRENT_USER\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\ExecutionPolicy»).LocalMachine — область применения на всех пользователей текущего компьютера. Она хранится в разделе реестра HKEY_LOCAL_MACHINE(«HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\ScriptedDiagnostics\ExecutionPolicy»).

У команды get-executionpolicy есть параметр -Scope. С помощью данного параметра можно выбрать область применения для которого отобразиться значение политики.
Прмер:

PowerShell

Get-ExecutionPolicy -scope Process

1 Get-ExecutionPolicy-scopeProcess

Результат выполнения командлета: RemoteSigned

При этом Области применения имеют приоритет высшим обладает MachinePolicy, потом UserPolicy, Process, CurrentUser и самый низкий приоритет у LocalMachine.
Поэтому в примере:

Scope ExecutionPolicy
#8212;#8212; —————
MachinePolicy Unrestricted
UserPolicy Undefined
Process RemoteSigned
CurrentUser AllSigned
LocalMachine Restricted

Для того что бы узнать значение политики выполнения скриптов для данной сесии, надо применить командлет  Get-ExecutionPolicy без параметров.

Пример:

PowerShell

Get-ExecutionPolicy

1 Get-ExecutionPolicy

Вывод: Unrestricted

Управление политикой выполнения с помощью PowerShell

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

Следующая команда получает действующую политику выполнения:

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

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

В этом случае действующая политика выполнения — RemoteSigned , так как политика выполнения для текущего пользователя имеет приоритет над политикой выполнения, заданной для локального компьютера.

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

Например, следующая команда возвращает политику выполнения для области CurrentUser :

Изменение политики выполнения

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

Если задать политику выполнения для областей LocalMachine или CurrentUser, это изменение будет сохранено в реестре и останется эффективным, пока вы не измените его.

Если задать политику выполнения для Process области, она не будет сохранена в реестре. Политика выполнения сохраняется до закрытия текущего процесса и любых дочерних процессов.

Примечание

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

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

Пример.

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

Пример.

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

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

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

Чтобы удалить политику выполнения для определенной области, задайте для политики выполнения значение Undefined .

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

Чтобы удалить политику выполнения для Scope :

если в какой-либо области не задана политика выполнения, действующая политика выполнения — это значение Restricted по умолчанию для клиентов Windows.

Задание другой политики для одного сеанса

Параметр ExecutionPolicy параметра можно использовать для установки политики выполнения для нового сеанса PowerShell. Политика влияет только на текущий сеанс и дочерние сеансы.

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

Пример.

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

Во время сеанса политика выполнения, заданная для сеанса, имеет приоритет над политикой выполнения, заданной в реестре для локального компьютера или текущего пользователя. Однако он не имеет приоритета над политикой выполнения, заданной с помощью групповая политика.

Редактирование с помощью Visual Studio Code

  1. Установите 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.
  2. Установите расширение PowerShell.

    1. Запустите приложение Visual Studio Code, введя в консоли или , если вы установили Visual Studio Code Insiders.

    2. Запустите Quick Open в Windows или Linux, нажав клавиши CTRL+P. В macOS нажмите клавиши CMD+P.

    3. В Quick Open введите и нажмите клавишу ВВОД.

    4. На боковой панели открывается представление Расширения. Выберите расширение PowerShell корпорации Майкрософт.
      Откроется примерно следующий экран Visual Studio Code:

    5. Нажмите кнопку Установить для расширения PowerShell корпорации Майкрософт.

    6. После установки кнопка Установить изменяется на Reload (Перезагрузить). Нажмите кнопку Reload (Перезагрузить).

    7. После перезагрузки 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.

Выберите версию, сделав следующее:

  1. Откройте палитру команд в Windows и Linux (CTRL+SHIFT+P). В macOS нажмите клавиши CMD+SHIFT+P.
  2. Выполните поиск по слову Сеанс.
  3. Щелкните PowerShell: Show Session Menu (PowerShell: показать меню сеансов).
  4. Выберите версию PowerShell, которую хотите использовать, из списка, например PowerShell Core.

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

Примечание

Меню сеансов PowerShell также можно открыть, щелкнув номер версии, который показан зеленым шрифтом в правом нижнем углу строки состояния.

Как запустить PowerShell?

В производственной среде предприятия, которую я поддерживаю, я работаю с тремя разными учетными записями пользователей Active Directory. В лабораторной среде в этой книге используются зеркальные экземпляры этих учетных записей. Я вошел на компьютер с Windows 10 в качестве пользователя домена, который не является администратором домена или локальным администратором.

Я запустил консоль PowerShell, щелкнув ярлык Windows PowerShell, как показано на рис. 1-1.

Обратите внимание, что в строке заголовка консоли PowerShell указано «Windows PowerShell», как показано на рис. 1-4

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

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

Закройте PowerShell. Перезапустите консоль PowerShell, только на этот раз щелкните правой кнопкой мыши ярлык Windows PowerShell и выберите пункт Запуск от имени администратора, как показано на рис. 1-5.

Если вы выполнили вход в Windows в качестве обычного пользователя, вам будет предложено ввести учетные данные. Я буду вводить учетные данные учетной записи пользователя, которая является пользователем домена и локальным администратором, как показано на рис. 1-6.

После повторного запуска PowerShell с правами администратора в строке заголовка должно быть указано «Администратор: Windows PowerShell», как показано на рис. 1-7.

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

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

Еще раз выполните поиск PowerShell, только на этот раз щелкните ее правой кнопкой мыши и выберите пункт «Закрепить на панели задач», как показано на рис. 1-8.

Щелкните правой кнопкой мыши ярлык PowerShell, который теперь закреплен на панели задач, и выберите пункт «Свойства», как показано на рис. 1-9.

Щелкните «Дополнительно», как показано в первой части рис. 1-10, установите флажок «Запуск от имени администратора», как показано во второй части рис. 1-10, а затем дважды нажмите кнопку OK, чтобы принять изменения и выйти из обоих диалоговых окон.

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

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

Запуск 32-разрядной версии Windows PowerShellStarting the 32-Bit Version of Windows PowerShell

При установке Windows PowerShell на 64-разрядном компьютере в дополнение к 64-разрядной версии устанавливается Windows PowerShell (x86) — 32-разрядная версия Windows PowerShell.When you install Windows PowerShell on a 64-bit computer, Windows PowerShell (x86), a 32-bit version of Windows PowerShell is installed in addition to the 64-bit version. При открытии Windows PowerShell по умолчанию запускается 64-разрядная версия.When you run Windows PowerShell, the 64-bit version runs by default.

Однако в некоторых случаях нужно запустить Windows PowerShell (x86) , например при использовании модуля, которому требуется 32-разрядная версия, или при удаленном подключении к 32-разрядному компьютеру.However, you might occasionally need to run Windows PowerShell (x86), such as when you’re using a module that requires the 32-bit version or when you’re connecting remotely to a 32-bit computer.

Для запуска 32-разрядной версии Windows PowerShell воспользуйтесь любой из следующих процедур.To start a 32-bit version of Windows PowerShell, use any of the following procedures.

Windows Server 2012 R2In Windows Server 2012 R2

  • На экране Пуск щелкните Windows PowerShell (x86) .On the Start screen, type Windows PowerShell (x86). Щелкните плитку Windows PowerShell x86.Click the Windows PowerShell x86 tile.
  • Выберите пункт Windows PowerShell (x86) в меню Сервис диспетчера сервера.In Server Manager, from the Tools menu, select Windows PowerShell (x86).
  • На рабочем столе переместите курсор в правый верхний угол, щелкните элемент Поиск, введите PowerShell x86 и выберите Windows PowerShell (x86) .On the desktop, move the cursor to the upper right corner, click Search, type PowerShell x86 and then click Windows PowerShell (x86).
  • В командной строке введите следующее: Via command line, enter:

Windows Server 2012In Windows Server 2012

  • На экране Пуск введите PowerShell и выберите Windows PowerShell (x86) .On the Start screen, type PowerShell and then click Windows PowerShell (x86).
  • Выберите пункт Windows PowerShell (x86) в меню Сервис диспетчера сервера.In Server Manager, from the Tools menu, select Windows PowerShell (x86).
  • На рабочем столе переместите курсор в правый верхний угол, щелкните элемент Поиск, введите PowerShell и выберите Windows PowerShell (x86) .On the desktop, move the cursor to the upper right corner, click Search, type PowerShell and then click Windows PowerShell (x86).
  • В командной строке введите следующее: Via command line, enter:

Windows 8.1In Windows 8.1

  • На экране Пуск щелкните Windows PowerShell (x86) .On the Start screen, type Windows PowerShell (x86). Щелкните плитку Windows PowerShell x86.Click the Windows PowerShell x86 tile.
  • Если вы используете средства удаленного администрирования сервера для Windows 8.1, можно также открыть Windows PowerShell x86 из меню Сервис диспетчера сервера.If you’re running Remote Server Administration Tools for Windows 8.1, you can also open Windows PowerShell x86 from the Server ManagerTools menu. Выберите Windows PowerShell (x86) .Select Windows PowerShell (x86).
  • На рабочем столе переместите курсор в правый верхний угол, щелкните элемент Поиск, введите PowerShell x86 и выберите Windows PowerShell (x86) .On the desktop, move the cursor to the upper right corner, click Search, type PowerShell x86 and then click Windows PowerShell (x86).
  • В командной строке введите следующее: Via command line, enter:

Windows 8In Windows 8

  • На экране Пуск переместите курсор в правый верхний угол, щелкните Параметры, Плитки, а затем переместите ползунок Показать средства администрирования в значение Да.On the Start screen, move the cursor to the upper right corner, click Settings, click Tiles, and then move the Show Administrative Tools slider to Yes. Введите PowerShell и выберите Windows PowerShell (x86) .Then, type PowerShell and click Windows PowerShell (x86).
  • Если вы используете средства удаленного администрирования сервера для Windows 8, можно также открыть Windows PowerShell x86 из меню Сервис диспетчера сервера.If you’re running Remote Server Administration Tools for Windows 8, you can also open Windows PowerShell x86 from the Server ManagerTools menu. Выберите Windows PowerShell (x86) .Select Windows PowerShell (x86).
  • На экране Пуск или рабочем столе введите PowerShell (x86) и выберите Windows PowerShell (x86) .On the Start screen or the desktop, type PowerShell (x86) and then click Windows PowerShell (x86).
  • В командной строке введите следующее: Via command line, enter:

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

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

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

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

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

Создание выполняемого действия для планировщика

Для создания ‘action’ мы должны указать программу и аргументы. В качестве программы будет сам интерпретатор ‘powershell.exe’, а аргументом будет путь до скрипта. Как говорилось раньше у нас будет несколько объектов (результат команд) и все их нужно будет объединить. Что бы это было возможным мы должны поместить результаты работы в переменные:

Мы так же можем указать параметр ‘WorkingDirectory’, который определяет откуда и будет запущена программа. Учитывая, что ‘powershell.exe’ виден через системные переменные использовать параметр ‘WorkingDirectory’ нам не требуется.

Действия выше аналогичны следующим настройкам в интерфейсе (т.е. так мы обычно добавляем скрипт Powershell в планировщик):

Служба удаленного взаимодействия Windows PowerShell

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

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

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

Запуск интерактивного сеанса

Чтобы запустить интерактивный сеанс с одним удаленным компьютером, используйте командлет Enter-PSSession. Например, чтобы запустить интерактивный сеанс с удаленным компьютером Server01, введите:

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

Чтобы завершить интерактивный сеанс, введите:

См. дополнительные сведения о командлетах Enter-PSSession и Exit-PSSession:

  • Enter-PSSession
  • Exit-PSSession;

Выполнение удаленной команды

Чтобы выполнить команду на одном или нескольких компьютерах, используйте командлет Invoke-Command. Например, чтобы выполнить команду Get-UICulture на удаленных компьютерах Server01 и Server02, введите:

Выходные данные будут возвращены на ваш компьютер.

Запуск сценария

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

Например, следующая команда выполняет скрипт DiskCollect.ps1 на удаленных компьютерах Server01 и Server02.

Установка постоянного подключения

Используйте командлет для создания постоянного сеанса на удаленном компьютере. В следующем примере создаются удаленные сеансы на удаленных компьютерах Server01 и Server02. Объекты сеанса хранятся в переменной .

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

Например, следующая команда выполняет команду Get-Hotfix в сеансах в переменной $s и сохраняет результаты в переменной $h. Переменная $h создается в каждом сеансе в переменной $s, но она не существует в локальном сеансе.

Теперь вы можете использовать данные в переменной с другими командами в том же сеансе. Результаты отобразятся на локальном компьютере. Пример:

Расширенная служба удаленного взаимодействия

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

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

См. дополнительные сведения о поставщике WSMan и командлетах WS-Management или введите команду в консоли Windows PowerShell.

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

  • Вопросы и ответы об удаленном взаимодействии PowerShell
  • Register-PSSessionConfiguration
  • Import-PSSession

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

Installing the MSI package

The MSI file looks like . For example:

Once downloaded, double-click the installer and follow the prompts.

The installer creates a shortcut in the Windows Start Menu.

  • By default the package is installed to
  • You can launch PowerShell via the Start Menu or

Note

PowerShell 7.1 installs to a new directory and runs side-by-side with Windows PowerShell 5.1.
PowerShell 7.1 is an in-place upgrade that replaces PowerShell 6.x. or PowerShell 7.0.

  • PowerShell 7.1 is installed to
  • The folder is added to
  • The folder is deleted

If you need to run PowerShell 7.1 side-by-side with other versions, use the
method to install the other version to a different folder.

Administrative install from the command line

MSI packages can be installed from the command line allowing administrators to deploy packages
without user interaction. The MSI package includes the following properties to control the
installation options:

  • ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL — This property controls the option for adding the
    Open PowerShell item to the context menu in Windows Explorer.
  • ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL — This property controls the option for adding the
    Run with PowerShell item to the context menu in Windows Explorer.
  • ENABLE_PSREMOTING — This property controls the option for enabling PowerShell remoting during
    installation.
  • REGISTER_MANIFEST — This property controls the option for registering the Windows Event
    Logging manifest.

The following example shows how to silently install PowerShell with all the install options enabled.

For a full list of command-line options for , see
Command line options.

Registry keys created during installation

Beginning in PowerShell 7.1, the MSI package creates registry keys that store the installation
location and version of PowerShell. These values are located in
. The value of
is unique for each build type (release or preview), major version, and architecture.

Release Architecture Registry Key
7.1.x Release x86
7.1.x Release x64
7.1.x Preview x86
7.1.x Preview x64

This can be used by administrators and developers to find the path to PowerShell. The
values are the same for all preview and minor version releases. The
values are changed for each major release.

Функции вызова с использованием точки

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

Следующая функция сохранена как .

При запуске скрипта ничего не происходит.

Если вы попытаетесь вызвать эту функцию, появится сообщение об ошибке.

Вы можете определить, загружаются ли функции в память, если проверите, есть ли они в PSDrive Function.

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

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

Кроме того, можно использовать полный путь.

Если часть пути хранится в переменной, ее можно объединить с оставшейся частью пути.
Для объединения переменной вместе с оставшейся частью пути не нужно использовать объединение строк.

Теперь, когда я проверяю PSDrive Function, функция существует.

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

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

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

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

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

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

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

Как запустить скрипт PowerShell с помощью ярлыка?

Осуществить такую задачу можно двумя способами:

  1. Создать bat/cmd файл, в котором прописать команду для запуска скрипта (с параметрами вы ознакомились выше)
  2. Создать ярлык на PowerShell, который можно найти в папке c:\Windows\System32\WindowsPowerShell\v<версия>\ и в свойствах ярлыка в поле «Объект» дописать необходимые параметры.

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

Скриптовый язык PowerShell — довольно мощный инструмент для решения различных задач, но его можно использовать не только для хороших вещей, но и во вред, поэтому, пользуйтесь им с умом 😉

Как разрешить выполнение неподписанного скрипта powershell?

1. В оболочке PowerShell, перед тем как запускать скрипт, выполнить команду, разрешающую выполнение неподписанных скриптов для текущего сеанса оболочки:

Set-ExecutionPolicy RemoteSigned -Scope Process

2. При запуске из стандартной коммандной строки использовать параметр -executionpolicy, т.е. запускать скрипт так:

powershell -executionpolicy RemoteSigned -file <имя_скрипта>

Оба способа устанавливают политику только для текущего сеанса, при этом, политика безопасности выполнения скриптов PowerShell, прописанная в реестре, не будет изменена и останется прежней. Если вы хотите поменять политику безопасности выполнения скриптов “на постоянно”, то используйте такой способ:

3. Разрешить запуск навсегда: запустить оболочку PowerShell от имени “Администратора”, затем выполните команду:

Set-ExecutionPolicy RemoteSigned

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

Примечание: Если скрипт был загружен из интернета, то чтобы избежать запроса на подтверждение запуска, нужно вместо RemoteSigned использовать Bypass – полное отключение любых запросов и предупреждений.

Заключение

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

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

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

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

Adblock
detector