Используем powershell для работы с планировщиком заданий для создания и изменения задач

Содержание

Рекомендации по именованию команд

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

  • Используйте одно из стандартных имен команд, предоставленных PowerShell.
  • Используйте команду, чтобы описать общую область действия, и параметры для уточнения действия командлета.
  • Не используйте синоним утвержденной команды. Например, всегда используйте , а не или .
  • Используйте команду только в той форме, которая указана в этом разделе. Например, используйте , но не или .
  • Не используйте следующие зарезервированные команды или псевдонимы. Язык PowerShell и лишь некоторые из его командлетов используют эти команды в исключительных обстоятельствах.
    • ForEach (foreach)
    • Format (f): упорядочивает объекты в указанной форме или макете
    • Group (gp): упорядочивает или связывает один или несколько ресурсов
    • Ping (pi)
    • Sort (sr)
    • Tee (te)
    • Where (wh)

Полный список команд можно получить с помощью командлета .

В PowerShell Core есть переименованный двоичный файл

PowerShell Core, или PowerShell, имеет версию 6 и выше с открытым исходным кодом и использует .NET Core. Поддерживаемые версии доступны в Windows, macOS и Linux.

Начиная с PowerShell 6 двоичный файл PowerShell был переименован в для Windows и для macOS и Linux. Вы можете запустить предварительную версию PowerShell с помощью . Дополнительные сведения см. в разделе и Сведения о pwsh.

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

Документ Ссылка
Справка по командлетам Обозреватель модулей PowerShell
Установка в Windows Установка PowerShell Core в Windows
Установка в macOS Установка PowerShell Core в macOS
Установка в Linux Установка PowerShell Core в Linux

Сведения о других версиях PowerShell см. в документации по использованию PowerShell.

Команды для обмена данными

PowerShell использует класс System.Management.Automation.VerbsCommunications для определения действий, которые применяются к обмену данными. В следующей таблице перечислено большинство определенных команд.

Команда (псевдоним) Действие Неподходящие синонимы
Connect (cc) Создает связь между источником и назначением. Эта команда образует пару с командой . Join, Telnet
Disconnect (dc) Удаляет связь между источником и назначением. Эта команда образует пару с командой . Break, Logoff
Read (rd) Получает сведения из источника. Эта команда образует пару с командой . Acquire, Prompt, Get
Receive (rc) Принимает сведения, отправляемые из источника. Эта команда образует пару с командой . Read, Accept, Peek
Send (sd) Доставляет сведения в место назначения. Эта команда образует пару с командой . Put, Broadcast, Mail, Fax
Write (wr) Добавляет сведения в целевой объект. Эта команда образует пару с командой . Put, Print

Прямой запуск

Самый простой способ запустить исполняемый файл в PowerShell — это перейти в директорию с файлом и стартовать его напрямую. Для примера возьмем простенькую программку, выводящую приветствие, и выполним ее командой:

Set-Location ″C:Program Files″.Hello.exe

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

Например различные встроенные программы и утилиты (notepad, calc, ping и т.п.), находящиеся в директории WindowsSystem32, можно запускать без указания пути.

Остановка и удаление

Операции Stop и Remove, по сути, отменяют то, что было сделано операциями Start и Setup соответственно:

  • –Stop (при запуске пользователем) сообщает SCM остановить службу;
  • при запуске системой экземпляр PSService.ps1 –Service просто уничтожается;
  • –Remove останавливает службу, отменяет ее регистрацию, используя sc.exe delete $serviceName, а затем удаляет файлы в каталоге установки.

Кроме того, их реализация очень похожа на таковую для Setup и Start.

  1. Определение каждого ключа в блоке Param в начале скрипта.
  2. Блок if обрабатывает ключ в процедуре Main в конце скрипта.
  3. Для операции Stop в C#-фрагменте имеется обработчик для OnStop, который запускает PSService.ps1 –Stop. Операция Stop работает по-разному в зависимости от типа пользователя — реального или системного.

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

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

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.

Открытие Windows PowerShell из системной папки

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

Пройдите последовательные шаги:

  1. Откройте Проводник Windows.
  2. Пройдите по пути:
C:\Windows\System32\WindowsPowerShell\v1.0
  1. В папке «v0» находятся файлы приложения, которые можно запустить на ПК. Щелкните два раза левой кнопкой мыши по файлу «powershell.exe».

Как запустить Windows PowerShell с повышенными правами в этом случае? Щелкните по файлу правой кнопкой мыши, а в контекстном меню нажмите на пункт «Запуск от имени администратора».

Сохранение, загрузка и импорт

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

Импорт на множество компьютеров

Если это командлет, который будет использоваться на множестве компьютеров или вы его планируете использовать короткое время, то скрипт можно сохранить в файл с расширением «.ps1». Загрузка такой функции будет выполняться так:

После выполнения этой команды мы сможем использовать нашу функцию.

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

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

Загрузка как модуля

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

Первое что нужно сделать это получить пути окружения Powershell:

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

В указанной папке Modules вам нужно создать папку и файл с одинаковыми именами. Файлу добавляете расширение «.psm1» и помещаете в него свой скрипт.

В моём случае путь выглядит так:

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

Рекомендую

Сравнение командлетов с аналогичными командами

Командлеты — это классы с большой функциональностью. Чтобы их назвать, необходимо понимание принципов «Действие-Объект». Чтобы было понятнее, приведена в пример фразу «Get-Help», что в переводе на русский язык означает «Получить-Помощь».

Обычно командлеты прописываются, чтобы обозначить то или иное действие. Выделяют несколько распространённых командлетов PowerShell:

  • Get-Process открывает запущенные в операционке процессы;
  • Get-Service открывает каталог служб и отображает их действующий статус;
  • Get-Content выводит содержимое того или иного файла на экран.

К сведению! В Windows Power Shell присутствуют так называемые алиасы. Это короткие синонимы, предназначенные для командлентов, которые часто применяются пользователем ПК.

Алиасы в Windows Power Shell

Удаление приложений

Удаление пакета установщика Windows с помощью PowerShell работает примерно так же, как и установка пакета. Далее представлен пример, в котором пакет для удаления выбирается на основе имени. В некоторых случаях его может быть проще отфильтровать с помощью IdentifyingNumber:

Удаление других приложений не так просто, даже если оно выполняется локально. Строки удаления командной строки для этих приложений можно найти путем извлечения свойства UninstallString.
Этот способ работает для приложений установщика Windows и более старых программ, отображающихся в разделе «Удаление»:

Выходные данные при необходимости можно отфильтровать по отображаемому имени:

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

Состояния службы

Службы могут находиться в разнообразных состояниях. Некоторые состояния обязательны, другие не обязательны. Два базовых состояния, которые должны поддерживаться всеми службами: остановлена (stopped) и запущена (started). Эти состояния соответственно отображаются как пустая ячейка или Running (Выполняется) в столбце Status на рис. 1.

Третье, не обязательное состояние — Paused (Приостановлена). И еще одно неявное состояние, поддерживаемое каждой службой, даже если оно нигде не упоминается, — Uninstalled (Удалена).

Служба может переходить между этими состояниями, как показано на рис. 2.

Рис. 2. Состояния службы

Наконец, существует несколько переходных состояний, которые службы могут поддерживать (не обязательно): StartPending, StopPending, PausePending, ContinuePending. Они полезны, только если переходы между состояниями занимают значительное время.

Что такое Windows-служба?

Windows-службы — это программы, выполняемые в фоне без взаимодействия с пользователем. Например, веб-сервер, который «молча» отвечает на HTTP-запросы для веб-страниц из сети, является службой, равно как и мониторинговое приложение, просто записывающее показатели производительности или фиксирующее аппаратные события от датчиков.

Службы можно запускать автоматически при загрузке системы. Или запускать по требованию, когда они запрашиваются приложениями, которые полагаются на них. Службы выполняются в собственном сеансе Windows, отличном от UI-сеанса. Они работают в ряде системных процессов с тщательно выбранными правами для ограничения рисков, связанных с безопасностью.

Похожие команды для различных действий

Следующие похожие команды представляют различные действия.

New и Присвойте параметру

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

Get и Чтение

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

Invoke и Запуск

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

Запуск Windows PowerShell в более ранних версиях Windows How to Start Windows PowerShell on Earlier Versions of Windows

В этом разделе объясняется, как запустить Windows PowerShell и интегрированную среду скриптов Windows PowerShell (ISE) в Windows 7, Windows Server 2008 R2 и Windows Server 2008. This section explains how to start Windows PowerShell and Windows PowerShell Integrated Scripting Environment (ISE) on Windows 7, Windows Server 2008 R2, and Windows Server 2008. Кроме того, здесь поясняется, как включить дополнительный компонент Windows PowerShell ISE в Windows PowerShell 2.0 в ОС Windows Server 2008 R2 и Windows Server 2008. It also explains how to enable the optional feature for Windows PowerShell ISE in Windows PowerShell 2.0 on Windows Server 2008 R2 and Windows Server 2008.

Используйте любой из следующих методов для запуска установленной версии Windows PowerShell 3.0 или Windows PowerShell 4.0, где это возможно. Use any of the following methods to start the installed version of Windows PowerShell 3.0, or Windows PowerShell 4.0, where applicable.

Из меню «Пуск» From the Start Menu

  • Нажмите кнопку Пуск, введите PowerShell и выберите Windows PowerShell. Click Start, type PowerShell, and then click Windows PowerShell.
  • В меню Пуск выберите Пуск, Все программы, Стандартные, откройте папку Windows PowerShell и щелкните Windows PowerShell. From the Start menu, click Start, click All Programs, click Accessories, click the Windows PowerShell folder, and then click Windows PowerShell.

В командной строке At the Command Prompt

В cmd.exe, Windows PowerShell или интегрированной среде сценариев Windows PowerShell для запуска Windows PowerShell введите следующее: In cmd.exe, Windows PowerShell, or Windows PowerShell ISE, to start Windows PowerShell, type:

Можно также использовать параметры программы powershell.exe для настройки сеанса. You can also use the parameters of the powershell.exe program to customize the session. Дополнительные сведения см. в статье Справка по командной строке PowerShell.exe. For more information, see PowerShell.exe Command-Line Help.

Развертывание в Windows 10 IoT Базовая

Windows PowerShell добавляется в Windows 10 IoT Базовая, если вы включаете функцию IOT_POWERSHELL, которую можно использовать для развертывания PowerShell 7. Действия, описанные выше для Windows 10 IoT Корпоративная, могут быть выполнены и для центра Интернета вещей.

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

Примечание

В архитектуре ARM64 Windows PowerShell не добавляется при включении IOT_POWERSHELL. Поэтому установка на основе ZIP-файла не поддерживается. Для добавления в образ используйте команду .

Examples

Example 1: Start a process that uses default values

This example starts a process that uses the file in the current folder. The command uses
all of the default values, including the default window style, working folder, and credentials.

Example 3: Start a process to sort items to a new file

This example starts a process that sorts items in the file and returns the sorted
items in the files. Any errors are written to the file. The
UseNewEnvironment parameter specifies that the process runs with its own environment variables.

This example uses splatting to pass parameters to the cmdlet. For more information, see
about_Splatting.

Example 6: Using different verbs to start a process

This example shows how to find the verbs that can be used when starting a process. The available
verbs are determined by the filename extension of the file that runs in the process.

The example uses to create a System.Diagnostics.ProcessStartInfo object for
PowerShell.exe, the file that runs in the PowerShell process. The Verbs property of the
ProcessStartInfo object shows that you can use the Open and RunAs verbs with
, or with any process that runs a file.

Example 7: Specifying arguments to the process

Both commands start the Windows command interpreter, issuing a command on the
folder. Because this foldername contains a space, the value needs surrounded with escaped quotes.
Note that the first command specifies a string as ArgumentList. The second command is a string
array.

Example 8: Create a detached process on Linux

On Windows, creates an independent process that remains running independently of the
launching shell. On non-Windows platforms, the newly started process is attached to the shell that
launched. If the launching shell is closed, the child process is terminated.

To avoid terminating the child process on Unix-like platforms, you can combine with
. The following example launches a background instance of PowerShell on Linux that stays
alive even after you close the launching session. The command collects output in file
in the current directory.

In this example, is running the Linux command, which launches as a
detached process. For more information, see the man page for
nohup.

Просмотр

  1. Как включить удаленное взаимодействие PowerShell?
  2. Какая команда PowerShell используется для запуска интерактивного сеанса с удаленным компьютером?
  3. В чем преимущество использования сеанса удаленного взаимодействия PowerShell по сравнению с простым указанием имени компьютера с помощью каждой команды?
  4. Можно ли использовать сеанс удаленного взаимодействия PowerShell с сеансом удаленного взаимодействия «один к одному»?
  5. Чем отличается тип объектов, возвращаемых командлетами, от типа объектов, которые возвращаются при выполнении этих же командлетов на удаленных компьютерах с ?

Версии Windows PowerShell

Данное средство было разработано в 2006 г. С тех пор оснастка сильно усовершенствовалось, выходило всё больше версий, в которых исправлялись имеющиеся дефекты.

Рассматриваемый инструмент доступен для скачивания для всех операционных систем семейства Windows. Однако на некоторых из них средство уже установлено по умолчанию, только в не самой последней версии. А самая новая — это версия PowerShell 6.2, вышедшая в 2018 г.

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

Запуск Windows PowerShell в более ранних версиях Windows

В этом разделе объясняется, как запустить Windows PowerShell и интегрированную среду скриптов Windows PowerShell (ISE) в Windows 7, Windows Server 2008 R2 и Windows Server 2008. Кроме того, здесь поясняется, как включить дополнительный компонент Windows PowerShell ISE в Windows PowerShell 2.0 в ОС Windows Server 2008 R2 и Windows Server 2008.

Используйте любой из следующих методов для запуска установленной версии Windows PowerShell 3.0 или Windows PowerShell 4.0, где это возможно.

Из меню «Пуск»

  • Нажмите кнопку Пуск, введите PowerShell и выберите Windows PowerShell.
  • В меню Пуск выберите Пуск, Все программы, Стандартные, откройте папку Windows PowerShell и щелкните Windows PowerShell.

В командной строке

В cmd.exe, Windows PowerShell или интегрированной среде сценариев Windows PowerShell для запуска Windows PowerShell введите следующее:

Можно также использовать параметры программы для настройки сеанса. Дополнительные сведения см. в статье Справка по командной строке PowerShell.exe.

С правами администратора (Запуск от имени администратора)

Нажмите кнопку Пуск, введите PowerShell, щелкните правой кнопкой мыши Windows PowerShell и выберите пункт Запуск от имени администратора.

Команды для обмена данными

PowerShell использует класс System.Management.Automation.VerbsCommunications для определения действий, которые применяются к обмену данными. В следующей таблице перечислено большинство определенных команд.

Команда (псевдоним) Действие Неподходящие синонимы
Connect (cc) Создает связь между источником и назначением. Эта команда образует пару с командой . Join, Telnet
Disconnect (dc) Удаляет связь между источником и назначением. Эта команда образует пару с командой . Break, Logoff
Read (rd) Получает сведения из источника. Эта команда образует пару с командой . Acquire, Prompt, Get
Receive (rc) Принимает сведения, отправляемые из источника. Эта команда образует пару с командой . Read, Accept, Peek
Send (sd) Доставляет сведения в место назначения. Эта команда образует пару с командой . Put, Broadcast, Mail, Fax
Write (wr) Добавляет сведения в целевой объект. Эта команда образует пару с командой . Put, Print

Ограничения и проблемы

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

Пример скрипта работает в Windows версий от XP до 10 и в соответствующих серверных версиях. В Windows XP вы должны установить Windows PowerShell v2, который по умолчанию отсутствует. Скачайте и установите Windows Management Framework v2 for XP (bit.ly/­1MpOdpV), включающую Windows PowerShell v2. Заметьте, что я очень мало тестировал в этой ОС, поскольку она больше не поддерживается.

Во многих системах выполнение скриптов Windows PowerShell запрещено по умолчанию. Если вы получаете ошибку наподобие «выполнение скриптов отключено в этой системе» при попытке запустить PSService.ps1, то используйте:

Более подробные сведения см. во врезке «Ссылки».

Очевидно, такой скрипт службы, как этот, не может сравниться по производительности с компилированной программой. Скрипт службы, написанный в Windows PowerShell, очень удобен для проверки концепции и для задач с низкими издержками в отношении производительности вроде мониторинга системы, кластеризации служб и т. д. Но для любой высокопроизводительной задачи рекомендуется переписать службу на C++ или C#.

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

Этот скрипт не имеет абсолютно никакого отношения к Ps­Service.exe от Марка Руссиновича (Mark Russinovich). Я выбрал имя PSService.ps1 до того, как узнал о совпадении имен. В конечном счете я сохранил имя скрипта-примера таким, поскольку оно делает понятным предназначение скрипта. Конечно, если вы планируете поэкспериментировать со своей службой на основе Windows PowerShell, то должны переименовать его, чтобы получить уникальное имя службы из уникального базового имени скрипта!

Ссылки

  • Введение в Windows-службы (bit.ly/1UOBJJY);
  • Как создавать Windows-службы (bit.ly/1VJCnJo);
  • Класс ServiceBase (bit.ly/1UOC13y);
  • Управление службами (bit.ly/1VJCZyG);
  • Как отлаживать Windows-службы (bit.ly/1RjEhPg).

Жан-Франсуа Лавуа (Jean-François Larvoire) работает на Hewlett-Packard Enterprise в Гренобле (Франция). В течение более 30 лет занимается разработкой программного обеспечения для BIOS персональных компьютеров, драйверов для Windows и для системного управления Windows и Linux. С ним можно связаться по адресу jf.larvoire@hpe.com.

Выражаю благодарность за рецензирование статьи эксперту JDH IT Solutions Джеффри Хиксу (Jeffery Hicks).

Как открыть PowerShell Windows 10 — 1 способ

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

Для запуска оболочки в Windows 10 можно использовать контекстное меню кнопки «Пуск»:

  1. Щелкните правой кнопкой мыши по меню «Пуск», или нажмите на клавиши «Win» + «X».
  2. В контекстном меню откроются пункты «Windows PowerShell» и «Windows PowerShell (администратор)».

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

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

  1. Запустите приложение «Параметры».
  2. Откройте «Персонализация».
  3. Войдите в раздел «Панель задач».
  4. В опции «Заменить командную строку оболочкой Windows PowerShell в меню, которое появляется при щелчке правой кнопкой мыши по кнопке “Пуск” или при нажатии клавиш Windows + X» передвиньте ползунок переключателя в положение «Включено».

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

Обходной путь

В качестве меры безопасности SQL Server 2012 SQL PowerShell в политике RemoteSigned. Это приводит к сбойу задания и к предыдущей проблеме.

Неограниченное ограничение определенно не рекомендуется с точки зрения безопасности, так как это означает отсутствие ограничений. Именно по этой причине при запуске с SQL 2012 г. скрипты PowerShell успешно запускаются, когда в контроллере домена machinePolicy установлено имя RemoteSigned.

Чтобы обойти эту проблему, воспользуйтесь одним из описанных ниже методов.

  • Не устанавливаем политику machine контроллера домена по GPO. Если он не определился, это означает, что приоритет будет иметь политика следующего уровня (например, UserPolicy, затем Process, then CurrentUser и наконец LocalMachine).

  • Создайте новую организационную единицу (OU) в Active Directory Users and Computers и увязывайте этот OU с групповой политикой. Затем в действие включить его для политики RemoteSigned. Для этого выполните следующие действия:

    1. Перейдите к пользователям и компьютерам Active Directory.

    2. Щелкните правой кнопкой мыши новое -> -> организационное подразделение домена, чтобы создать новое организационное подразделение.

    3. Введите gpmc.msc в Run, а затем щелкните правой кнопкой мыши объект групповой политики -> New для создания нового GPO.

    4. Щелкните правой кнопкой мыши недавно созданный редактор GPO -> . Откроется новое окно.

    5. Перейдите к административным шаблонам политики конфигурации компьютеров Windows компоненты Windows PowerShell -> дважды щелкните -> -> -> -> Включив выполнение скрипта.

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

    7. Чтобы выполнить поиск абонентской группы для пользователя в поле Абонентская группа (телефонный контекст), нажмите кнопку Обзор.

    8. Перейдите к пользователям и компьютерам Active Directory, а затем нажмите кнопку Компьютеры. Вы найдете список компьютеров для домена. Щелкните правой кнопкой мыши компьютер(ы), который необходимо переместить в недавно созданном организационном подразделении. Таким образом можно переместить одну или группу компьютеров в организационное подразделение.

    9. Перейдите к управлению групповой политикой, щелкните правой кнопкой мыши вновь созданный организационный блок, щелкните Ссылку существующего GPO, выберите недавно созданную GPO, а затем нажмите кнопку ОК.

    10. Обнови политику контроллера домена и клиентского компьютера, вырулив эту команду в PowerShell.

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

Notes

By default, launches a process asynchronously. Control is instantly returned to
PowerShell even if the new process is still running.

  • On the local system, the launched process lives on independent from the calling process.
  • On a remote system, the new process is terminated when the remote session ends, immediately
    following the command. Therefore, you cannot use in a remote session
    expecting the launched process to outlive the session.

If you do need to use in a remote session, invoke it with the Wait parameter. Or
you could use other methods to create a new process on the remote system.

When using the Wait parameter, waits for the process tree (the process and all
its descendants) to exit before returning control. This is different than the behavior of the
cmdlet, which only waits for the specified processes to exit.

On Windows, the most common use case for is to use the Wait parameter to block
progress until the new process exits. On non-Windows system, this is rarely needed since the default
behavior for command-line applications is equivalent to .

This cmdlet is implemented by using the Start method of the System.Diagnostics.Process
class. For more information about this method, see
.

Команды для работы с данными

PowerShell использует класс System.Management.Automation.VerbsData для определения действий, которые применяются к обработке данных. В следующей таблице перечислено большинство определенных команд.

Имя команды (псевдоним) Действие Неподходящие синонимы
Backup (ba) Сохраняет данные путем репликации. Save, Burn, Replicate, Sync
Checkpoint (ch) Создает моментальный снимок текущего состояния данных или их конфигурации. Поиск различий
Compare (cr) Сравнивает данные из одного ресурса с данными из другого. Поиск различий
Compress (cm) Сжимает данные ресурса. Образует пару с командой . Компактный
Convert (cv) Изменяет данные из одного представления в другое, если командлет поддерживает двунаправленное преобразование или преобразование между несколькими типами данных. Change, Resize, Resample
ConvertFrom (cf) Преобразует один первичный тип входных данных (существительное в командлете указывает входные данные) в один или несколько поддерживаемых типов выходных данных. Export, Output, Out
ConvertTo (ct) Преобразует один или несколько типов входных данных в основной тип выходных данных (существительное в командлете указывает тип выходных данных). Import, Input, In
Dismount (dm) Отключает именованную сущность от расположения. Эта команда образует пару с командой . Unmount, Unlink
Edit (ed) Изменяет существующие данные путем добавления или удаления содержимого. Change, Update, Modify
Expand (en) Восстанавливает сжатые данные ресурса до исходного состояния. Эта команда образует пару с командой . Explode, Uncompress
Export (ep) Инкапсулирует первичные входные данные в постоянное хранилище данных, например файл, или в формат обмена. Эта команда образует пару с командой . Extract, Backup
Import (ip) Создает ресурс на основе данных, хранящихся в постоянном хранилище данных (например, в файле) или в формате обмена. Например, командлет импортирует данные из файла с разделителями-запятыми (CSV) в объекты, которые могут использоваться другими командлетами. Эта команда образует пару с командой . BulkLoad, Load
Initialize (in) Подготавливает ресурс для использования и задает для него состояние по умолчанию. Erase, Init, Renew, Rebuild, Reinitialize, Setup
Limit (l) Применяет ограничения к ресурсу. Quota
Merge (mg) Создает один ресурс из нескольких. Combine, Join
Mount (mt) Подключает именованную сущность к расположению. Эта команда образует пару с командой . Подключение
Out (o) Отправляет данные из среды. Например, командлет отправляет данные на принтер.
Publish (pb) Делает ресурс доступным для других пользователей. Эта команда образует пару с командой . Deploy, Release, Install
Restore (rr) Задает для ресурса предопределенное состояние, например состояние, заданное . Например, командлет запускает восстановление системы на локальном компьютере. Repair, Return, Undo, Fix
Save (sv) Сохраняет данные, чтобы избежать их потери.
Sync (sy) Гарантирует, что два ресурса или более находятся в одном и том же состоянии. Replicate, Coerce, Match
Unpublish (ub) Делает ресурс недоступным для других пользователей. Эта команда образует пару с командой . Uninstall, Revert, Hide
Update (ud) Обеспечивает актуальность ресурса для поддержания его состояния, точности, согласованности или соответствия требованиям. Например, командлет обновляет и добавляет файлы форматирования в текущую консоль PowerShell. Refresh, Renew, Recalculate, Re-index