Установка powershell. Установка и импорт модуля Active Directory для PowerShell

Уже прошло какое-то время с момента запуска окончательного релиза новейшей операционной системы от Microsoft и с ней уже успели познакомиться не только энтузиасты, тестирующие промежуточные сборки, а и те пользователи, которые загрузили долгожданное обновление. Хороша ли новая система или нет? Это новейший инновационный продукт или просто та «восьмерка», которая и должна была выйти в свое время? Это вопросы, на которые в любом случае не удастся дать однозначные ответ. Помимо очевидных нововведений, к коим относятся появившееся в системе меню «Пуск», браузер Microsoft Edge, совместимость с Xbox, интегрированный с Кортаной поиск и представление задач, есть еще ряд нововведений, о которых знает далеко не каждый пользователь Windows 10.

И вот к одному из таких нововведений можно отнести возможность установки программных продуктов непосредственно средствами оболочки Windows PowerShell, о чем и пойдет речь далее в этой статье. Несмотря на то, что эта функциональная возможность появилась еще в апреле 2014-го года вместе с выходом Windows Management Framework 5.0 Preview, нативной она смогла стать только с окончательным релизом «десятки». Итак, давайте же посмотрим, какой модуль отвечает за эту функциональную возможность и как можно проинсталлировать программные продукты, не загружая инсталляционные файлы.

Модуль Windows PowerShell OneGet

Еще с выходом Windows Management Framework 5.0 Preview у командной оболочки Windows PowerShell появилось несколько новых возможностей, предназначенных для упрощения управления компьютерами. К таким возможностям относятся две занимательные технологии, а именно: Windows PowerShell Desired State Configuration и Certified for Windows Network Switches.

В случае с технологией Certified for Windows Network Switches – был добавлен ряд командлетов Windows PowerShell, отвечающих за управление сертифицированными для Windows сетевыми коммутаторами. То есть, появилось 19 новых командлетов, которые вы можете найти, выполнив в оболочке PowerShell команду «Get-Command *-NetworkSwitch*». Так как технология достаточно серьезная и заслуживает отдельного внимания, в данной статье я ограничусь лишь небольшим описанием и не буду рассматривать эту технологию более подробно.

А вот на второй технологии следует остановиться подробнее. В случае установки Windows Management Framework 5 или операционной системы Windows 10 вы можете воспользоваться средством, позволяющим существенно упростить на ваших компьютерах поиск и установку программного обеспечения. Таким средством является OneGet. OneGet – это агрегатор управления пакетами, то есть модуль, использующий специальные репозитории, предоставляющий единый интерфейс для обнаружения, установки и инвентаризации программного обеспечения. Иначе говоря, эта технология с одной стороны предоставляет набор командлетов, позволяющих конечному пользователю управлять инсталляционными пакетами (о которых мы с вами будем говорить немного ниже), а с другой стороны она предоставляет интерфейс для написания пакетов поставщиков.

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

  • Пакет . Если говорить в двух словах, то пакет представляет собой программу, которая собирается и устанавливается из определенного источника при помощи любой доступной системой управления пакетами. Как правило, пакет предоставляет собой скомпилированный код, с дополнительной мета информацией, к которой может относиться описание пакета, его версия или «зависимости». Система управления пакетами, например, для выполнения автоматического обновления программного продукта до новой версии, для того чтобы удостовериться в том, что все зависимости пакета будут установлены, должна обработать такую мета информацию и, в случае необходимости, должна автоматически установить все отсутствующие пакеты;
  • Репозиторий . Согласно википедии, репозитории представляют собой место, где хранятся и поддерживаются какие-либо данные. Чаще всего данные в репозитории хранятся в виде файлов, доступных для дальнейшего распространения по сети. Изначально репозитории использовались Linux-системами, позволяя устанавливать пакеты, необходимые для работы системы из других расположений. Большинство репозиториев бесплатны, однако некоторые компании предоставляют доступ к собственным репозиториям за платную подписку. О репозиториях OneGet мы с вами поговорим немного ниже;
  • Диспетчер пакетов . Представляет собой набор программных инструментов, отвечающий за автоматизацию процесса установки, обновления, настройки и удаления пакетов программного обеспечения. Как правило, пакеты включают в себя базу данных, в которой указываются предварительные требования и зависимости программного обеспечения, а также информацию о версии продукта, предотвращающую использование нерабочих программных продуктов. К диспетчерам пакетов можно отнести линуксовский apt-get или NuGet, который позже появился в Windows-системах. В свою очередь, OnetGet представляет собой логическое продолжение NuGet, работающее в качестве агрегатора для всех доступных диспетчеров пакетов, именуемых поставщиками.

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

  • Bootstrap – поставщик, позволяющий обнаруживать остальных поставщиков;
  • MSI – поставщик, предназначенный для обработки файлов MSI;
  • MSU – в свою очередь, поставщик, отвечающий за обработку файлов обновлений Microsoft;
  • ARP (Add/Remove programs) – поставщик, отвечающий за инвентаризационные данные о любом программном продукте, который зарегистрирован в компоненте системы «Удаление или изменение программы»;
  • PowerShellGet – поставщик, позволяющий управлять различными модулями PowerShell.

Полный список поставщиков OneGet с их кратким описанием вы можете найти по следующей ссылке .

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

  • Find-Package – выполнение поиска пакетов;
  • Get-Package – возвращает список всех установленных на компьютере пакетов;
  • Get-PackageProvider – возвращает список поставщиков, которые на данном компьютере подключены к OneGet;
  • Get-PackageSource — возвращает список источников пакетов, которые зарегистрированы для определенного поставщика пакетов;
  • Install-Package – позволяет устанавливать один или несколько программных продуктов;
  • Register-PackageSource – добавление для указанного поставщика пакетов источник пакета;
  • Save-Package – позволяет сохранить пакет на локальный компьютер без последующей установки;
  • Set-PackageSource – изменение для указанного поставщика пакетов источник пакета;
  • Uninstall-Package – удаление одного или нескольких пакетов программных продуктов;
  • Unregister-PackageSource – удаление зарегистрированного источника пакета.
    • Установка программного обеспечения при помощи OneGet

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

      Установка поставщика пакетов Chocolatey

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

  2. Как видно на предыдущей иллюстрации, поставщик Chocolatey не установлен на нашем локальном компьютере. Следовательно, это нужно исправить. Обратите внимание на то, что для добавления поставщика пакетов у параметра ExecutionPolicy оболочки PowerShell должно быть установлено значение Unrestricted . В противном случае добавить поставщик не получится. Напомню, что командлет Get-ExecutionPolicy позволяет вам отобразить политики выполнения для текущего сеанса. Политика выполнения – это часть стратегии безопасности оболочки Windows PowerShell, которая определяет, можно ли загружать файлы конфигурации и выполнять скрипты, а также определяет, для выполнения каких скриптов требуется цифровая подпись. По умолчанию используется значение «Restricted » (не загружает файлы конфигурации и не выполняет скрипты), поэтому если вы у себя не изменяли значение политики выполнения – выполните команду Set-Executionpolicy Unrestricted . Так как по умолчанию областью политики выполнения является значение LocalMachine, чтобы параметры политики распространялись только на текущего пользователя, вы можете к применяемой команде еще добавить параметр –Scope со значением CurrentUser . Выходные данные этих двух команд видно на следующей иллюстрации:

  3. На этом этапе мы можем посмотреть список поставщиков, которые зарегистрированы в OneGet на текущем компьютере. Для этого вы можете воспользоваться командлетом Get-PackageProvider . Данный командлет, как я уже успел упомянуть немного выше, возвращает список поставщиков пакетов, которые уже подключены в OneGet. При желании вы можете отфильтровать результаты, основанные на всех или на части одного (нескольких) имени поставщика. Например, чтобы посмотреть, какие поставщики подключены на данный момент, вы должны выполнить командлет Get-PackageProvider без каких-либо дополнительных параметров. Как видно на следующей иллюстрации, изначально на компьютере у меня подключено 4 таких поставщика, о которых я уже сегодня вам рассказывал. Теперь, чтобы установить поставщик Chocolatey на компьютере вам нужно выполнить команду Get-PackageProvider –Name Chocolatey –ForceBootstrap , где параметр –ForceBootstrap отвечает за автоматическую установку поставщика. Обратите внимание на то, что, как правило, при установке поставщика Chocolatey также должен быть просинталлирован поставщик NuGet. Как видно на следующей иллюстрации, после повторного использования командлета Get-PackageProvider , устанавливаемый нами поставщик уже должен фигурировать в списке:

Теперь мы можем сгенерировать полный список всех доступных в поставщиках пакетов и передать его по конвейеру командлету Export-CliXML для создания XML-представления объектов и их сохранения в XML-файле. Учтите, что экспортируемый вами список будет постоянно меняются и со временем все больше и больше пакетов будут добавляться в используемые вами репозитории. Соответственно, не забывайте время от времени заменять экспортируемый вами файл. Для того чтобы выполнить экспорт списка пакетов и сохранить этот список в папке C:\TestPosh вам нужно выполнить следующую команду: Find-Package | Export-CliXML C:\TestPosh\Test.xml

Учтите, что процедура экспорта обязательно займет у вас какое-то время. После того как команда закончит выполняться и у вас на компьютере будет создан XML файл, импортируйте его и, для удобства просмотра, при помощи конвейера и команды GridView , отвечающей за отображение результатов выполнения команды в окне в виде интерактивной таблицы, можете посмотреть, какие пакеты будут доступны для установки. Естественно, этот список пакетов вы можете открыть при помощи любого приложения, которое способно обрабатывать XML файлы, например, средствами того же Excel. Данная команда, как вы видите на следующей иллюстрации, выглядит следующим образом: Import-CliXML С:\TestPosh\Test.xml | Out-GridView

Так как поставщик уже установлен, можно переходить к следующей части данной процедуры, а именно к

Установке программного обеспечения средствами PowerShell

Прежде чем устанавливать программные продукты нам следует посмотреть, что же уже установлено на компьютере. Для выполнения этой задачи вы можете воспользоваться командлетом Get-Package , который возвращает список всех пакетов программного обеспечения, установленных на локальном компьютере как с помощью OneGet, так и другими средствами инсталляции приложений. При желании вы также можете запускать командлет Get-Package и на удаленных компьютерах, запустив его как часть Invoke-Command, команды Enter-PSSession или скрипта.

В том случае, если вы хотите получить информацию по конкретному программному обеспечению, например, по установленным продуктам Microsoft Office 2013, вы можете наряду с данным командлетом использовать параметр –Name с соответствующим значением, например, Get-Package -Name «office 2013» . Выходные данные этого командлета видны ниже:

Перед инсталляцией программного обеспечения попробуем определиться с тем, что же нам нужно установить. Так как на машине установлен только офис 2013 и еще несколько приложений, далее я вам покажу, как можно установить такие программные продукты, как Adobe Creative Cloud, Adobe Reader, Notepad++, а также Process Explorer, Process Monitor и WinRar.

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

Например, для начала попробуем найти приложения Adobe, которые доступны для инсталляции из добавленного нами поставщика Chocolatey. Для этого достаточно помимо самого командлета указать параметр –Name и в качестве его значения ввести искомый программный продукт. Так как после слова Adobeу инсталляционных пакетов может быть указано имя продукта, следует ввести имя продукта следующим образом: Adobe* , как показано на следующей иллюстрации. Как вы видите, модуль OneGet обнаружил в репозитории следующий инсталляционный пакет: adobe-creative-cloud версии 1.0. В принципе, это один из искомых продуктов, а это значит, что его следует проинсталлировать. Для этого, как также можно заметить на следующей иллюстрации, нужно воспользоваться возможностями командлета Install-Package . Чтобы установить Creative Cloud выполняется следующая команда Install-Package -Name adobe-creative-cloud –Force , где параметр Force, как принято в PowerShell, переопределяет ограничения, препятствующие выполнению команды до тех пор, пока изменения не начнут нарушать требования безопасности. Выходные данные этих команд можно увидеть на следующей иллюстрации:

Теперь, после того как первый программный продукт был установлен попробуем выполнить поиск определенной версии Adobe Reader. Для этого помимо уже известной команды Find-Package –Name AdobeReader следует добавить параметр –AllVersions , который возвращает все доступные версии пакета, или все версии пакета, которые находятся в диапазоне, указанном в параметрах MinimumVersion и MaximumVersion . Обратите внимание на то, что этот параметр не является обязательным, так как изначально поиск отображает свежайшую версию программного продукта. Теперь из всех доступных версий нам следует выбрать ту, которая должна быть проинсталлирована на компьютере, например, пусть это будет версия 2015.007.20033 . для того, чтобы установить именно эту версию ридера, следует для команды Install-Package -Name AdobeReader добавить параметр –RequiredVersion со значением 2015.007.20033 , который определяет точную версию пакета, который вы хотите установить. Также вы можете установить максимально доступную версию продукта, добавив параметр MaximumVersion с соответствующим значением. Вывод этих команд виден на следующей иллюстрации:

Если вам нужно установить свежайшую версию программного продукта и в то же время вы не хотите вводить в оболочке PowerShell несколько команд, вы можете обобщить поиск и установку пакета при помощи конвейера. Например, в случае с установкой последней версии текстового редактора Notepad++ вы можете выполнить следующую команду: Find-Package -Name NotepadPlusPlus | Install-Package –Force . Таким образом, вы выполняете поиск пакета в репозитории и в случае нахождения результата сразу инсталлируете его в тихом режиме. Процесс выполнения установки этого программного продукта виден ниже:

Теперь, так как согласно указанному выше заданию осталось установить еще Process Explorer, Process Monitor и WinRar, попробуем установить сразу несколько программных пакетов. Для этого желательно точно знать, как называются эти пакеты в самом репозитории. Как я уже писал ранее, это можно проверить при помощи командлета Find-Package | Out-GridView . После того как будут известны имена пакетов можно заняться самой установкой. Для этого вы можете выполнить следующую команду: Find-Package -Name procexp, procmon, winrar | Install-Package . В данном примере, как видно на следующей иллюстрации, я специально не указываю параметр Force , чтобы вы могли обратить внимание на весь процесс установки нескольких программных пакетов одновременно.

Сохранение и удаление программ

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

Для того чтобы сохранить инсталляционный пакет можно воспользоваться очередным командлетом модуля OneGet, а именно модулем Save-Package . Данный командлет позволяет сохранить пакеты на локальном компьютере без их последующей установки. По умолчанию данный командлет сохраняет последнюю версию программного продукта, однако если вы к текущему командлету добавите параметр AllVersions , у вас на компьютере будут сохранены все размещенные в репозитории версии выбранной вами программы. Более того, аналогично параметрам командлетов поиска и установки программ, помимо сохранения всех версий, при помощи параметров -MaximumVersion и –MinimumVersion , вы еще можете выбрать диапазон версий пакета, который желаете сохранить. Чтобы сохранить пакет на своем компьютере, помимо параметра Name и, в случае необходимости, параметра, отвечающего за версию продукта, вы должны указать параметр Path с будущим расположением вашего инсталлятора.

Как видно на следующей иллюстрации, команда Save-Package –Name Procexp –Path C:\TestPosh сохранит последнюю версию Process Explorer в папке C:\TestPosh:

Если вы случайно установили не тот пакет, вы всегда можете при помощи модуля OneGet его удалить. Для этого используется командлет Uninstall-Package . Как и в случае с остальными командлетами данного модуля, для удаления программы вам нужно указать параметр Name с соответствующим именем приложения, а также, для тихого удаления, вы можете использовать параметр Force. Например, чтобы удалить с компьютера установленный ранее WinRAR вам нужно выполнить следующую команду: Uninstall-Package –Name WinRAR –Force , как показано ниже:

Заключение

Из этой статьи вы узнали об одной из особенностей новой операционной системы от Microsoft, а именно об инсталляции программных продуктов средствами командной оболочки Windows PowerShell. Я вам рассказал о самом модуле OneGet, об основной терминологии, используемой наряду с этой технологией и о том, какие существуют предустановленные поставщики пакетов. Вы узнали о том, как можно подключить к OneGet сторонний поставщик пакетов и как при его помощи можно находить, устанавливать, сохранять и удалять программные продукты.

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

VN:F

Rating: 9.9/10 (18 votes cast)

Установка программ средствами PowerShell в Windows 10 , 9.9 out of 10 based on 18 ratings

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

Я был ярым поклонником vbs-скриптов. Так как заметил, что для тех задач, для которых ранее использовал Delphi, вполне годится скриптовый язык сценариев vbs. Ведь это намного удобней просто открыть блокнот, накидать туда несколько строк, сохранить файл с нужным расширением и запустить скрипт. Для этого не нужно ничего устанавливать, как например Delphi, который к тому же платный.

Хоть vbs неплох, но его преемник PowerShell имеет куда более широкий функционал.

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

Если начиная с ОС Windows 7 PowerShell идет в комплекте с самой Windows , то в Windows XP его нужно скачать и установить - скачать PowerShell V2 для Windows XP SP3 .

5-ю версию Powershell можно скачать по ссылке: microsoft.com , там же расписано какой файл для нужной ОС качать и как установить.

Как разрешить запуск локальных PowerShell скриптов?

По умолчанию Windows не даст запустить PowerShell-скрипты из-за соображений безопасности. Необходимо разрешить выполнение локальных скриптов. Выполните команду в консоли (она разрешит запускать локальные скрипты и скачанные скрипты подписанные доверенным сертификатом):

powershell -Command Set-ExecutionPolicy RemoteSigned

Иначе при попытке запустить свой скрипт вы увидите вот такой текст:

Не удается загрузить файл C:\ImageSize.ps1, так как выполнение скриптов запрещено для данной системы. Введите "get-help about_signing" для получения дополнительных сведений.
+ CategoryInfo: NotSpecified: (:) , ParentContainsErrorRecordException
+ FullyQualifiedErrorId: RuntimeException

Чтобы вернуть эту политику безопасности обратно, напишите:

powershell -Command Set-ExecutionPolicy Restricted

Чтобы разрешить запускать любые скрипты, без проверки подписи, напишите:

powershell -Command Set-ExecutionPolicy Unrestricted

Если при запуске скрипта вы наблюдаете такое сообщение:

Security Warning Run only scripts that you trust. While scripts from the Internet can be useful, this script can potentially harm your computer. Do you want to run \server\scripts\my.ps1? [D] Do not run [R] Run once [S] Suspend [?] Help (default is "D"): d

И хотите от него избавиться, то при запуске скрипта используйте параметр -ExecutionPolicy Bypass

Powershell -ExecutionPolicy Bypass -file "\\server\scripts\my.ps1"

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

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

Powershell -File your-script-name.ps1

Где your-script-name.ps1 - имя вашего скрипта. Файлы PowerShell-скриптов имеют расширение *.ps1

Справка или помощь по Windows PowerShell

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

Введите в консоли команды:

powershell -command Get-Help

powershell -command Get-Help -?

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

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

Например:

  • powershell -command Get-Help Get-Help - общая справка по командлету Get-Help
  • powershell -command get-help Get-Help -examples - примеры того, как можно использовать командлет get-help
  • powershell -command get-help Get-Help -detailed - подробная справка по командлету get-help
  • powershell -command get-help Get-Help -full - наиболее полная справка по командлету get-help

winintro.ru/windowspowershellhelp.ru/ - справка в виде html-книги

Заметки о Windows Powershell:

Операторы сравнения

  • -eq - Equal - Равно
  • -ne - Not equal - Не Равно
  • -ge - Greater than or equal - Больше или Равно
  • -gt - Greater than - Больше
  • -lt - Less than - Меньше
  • -le - Less than or equal - Меньше или Равно
  • -like - Wildcard comparison - Использование символов подстановки для поиска соответствия образцу
  • -notlike - Wildcard comparison - Использование символов подстановки для поиска несоответствия образцу
  • -match - Regular expression comparison - Использование регулярных выражений для поиска соответствия образцу
  • -notmatch - Regular expression comparison - Использование регулярных выражений для поиска несоответствия образцу
  • -replace - Replace operator - Заменяет часть или все значение слева от оператора
  • -contains - Containment operator - Определение, содержит ли значение слева от оператора значение справа. Результатом является булево значение
  • -notcontains - Containment operator - Определение того, что значение слева от оператора не содержит значение справа. Результатом является булево значение

По умолчанию операторы сравнения не являются чувствительными к регистру.
Для сравнения с учетом регистра к команде подставляется префикс "c". Для примера, оператор -eq с зависимостью от регистра изменяется на "-ceq".
Для явно заданного независящего от регистра сравнения к команде подставляется префикс "i". Пример: оператор -replace без зависимости от регистра будет -ireplace

  • -is - Является типом
  • -isnot - Не является типом
  • -as - Как тип, без ошибки если возникает неудача преобразования

Логические операторы PowerShell:

  • -and - Оба условия должны быть истины, чтобы выражение было истинно
  • -or - Одно или оба условия должны быть истины, чтобы выражение было истинно
  • -xor - Одно условие должно быть истинно, а второе должно иметь значение "ложь", чтобы выражение было истинно
  • -not - Указанные условия должны иметь значение "ложь", чтобы выражение было истинно
  • ! - Указанное условие должно иметь значение "ложь", чтобы выражение было истинно

$myVar -is "String" $myVar -eq 123 $myVar -ceq $myVar2 "abcdef" -like "abc*" "abcdef" -replace "dEf","xyz" $myVar1 -is "String" -and $myVar2 -is "Int" (1 -eq 1) -and -not (2 -gt 2)

Операции со строками

#Разбить строку по пробелам: $string = "Test string" $string.split(" ") $string.IndexOf(" ") #Ищем в $string первый пробел # Возвращает отсчитываемый от нуля индекс первого вхождения PS> "abcdeabcde".indexOf("cde") 2 # Возвращает позицию индекса с отсчетом от последнего вхождения указанного символа PS> "abcdeabcde".lastIndexOf("c") 7 # Возвращает подстроку начиная с 1 позиции PS> "abcdefgh".Substring(1) bcdefgh # Возвращает подстроку начиная с 1 позиции и длиной в 4 символа PS> "abcdefgh".Substring(1,4) bcde # Вставка подстроки с позиции 0 PS> "abcdefgh".insert(0,"X") Xabcdeabcde # Удаление с позиции 0 длиной 2 PS> "abcdefgh".remove(0,2) cdeabcde # Свойство объекта - длина строки PS> "abcdefgh".length 8 # Возвращает True, если строка содержит подстроку "cde" PS> "abcdefgh" .Contains("cde") True # Возвращает True, если строка начинается с подстроки "abc" PS> "abcdefgh".startsWith("abc") True # Возвращает True, если строка заканчивается подстрокой "fgh" PS> "abcdefgh".endsWith("fgh") True # Возвращает True, если строка содержит подстроку "cde" PS> $"abcdefgh" -like "*cde*" True # Возвращает массив, где "d" - разделитель PS> "abcdefgh" -split "d" abc efgh # Возвращает строку, объединенную из двух ":" - разделитель PS> "abcdefgh", "xyz"-join ";" abcdefgh;xyz # Возвращает строку где "abc" будут заменены на "XYZ" PS> "abcdefgh".replace("abc","XYZ") XYZdefgh # Возвращает строку где символы приводятся к ВЕРХНЕМУ регистру PS> "abcdefgh".ToUpper() ABCDEFGH # Возвращает строку где символы приводятся к нижнему регистру PS> "ABCDEFGH".ToLower() abcdefgh

Предопределенные переменные

$home – каталог пользователя
$NULL – пусто
$true – истина
$false – лож
$DebugPreference – “Continue” выводить отладку, “SilentlyContinue” не выводить отладочную информацию. См. команду Write-Debug

Работа с файлами

$string | Out-File $file -Append #Дописать $string новой строкой в файл $file $string = get-content -Path $file #Получить в $string содержимое файла $file $jokes = ::ReadAllText($file) #читаем весь файл в одну строку Test-Path "C:\test.txt" #Проверить существование файла

Найти все файлы с определенным расширением расширением в каталоге и подкаталогах.
Затем скопировать эти файлы в другой каталог.

$flist = get-childitem e:\doc\* -include *.pdf -recurse $flist | ForEach-Object{$_.CopyTo("e:\doc\all_pdf\" + $_.PSChildName)} ls d:\ | ?{$_.psiscontainer} | select fullname #Показать только каталоги ls d:\ | ?{!$_.psiscontainer} | select fullname #Показать только файлы $local = Get-Location #Текущий каталог $local.Path # Рабочий каталог $local.Drive.Root # Корень $local.Drive.Name # Буква диска $local.Drive.Used # Использовано диска $local.Drive.Free # Свободно на диске

Вывод полных имен файлов на диске D: которые изменялись в промежутке времени от 1 июня 2014-го года до 20 сентября 2014-го года:

Ls d:\ -recurse | ?{!$_.psiscontainer} | select fullname,LastWriteTime | Where-Object { $_.LastWriteTime -ge "06/01/2014" -and $_.LastWriteTime -le "09/20/2014"}

Вывод текста на экран

# текст на который надо обратить внимание. Выделяется желтым. Write-Warning("Текст требующий внимания") # Просто выводит текст Write-Host("Просто текст") #включили вывод отладочной информации $DebugPreference = "Continue" # вывели отладочную информацию Write-Debug "Cannot open file." # отключили отладочную вывод отладочной информации $DebugPreference = "SilentlyContinue"

Сделать паузу на несколько секунд

Start-Sleep -s 15 # Пауза на 15 секунд

Пауза в консоли, до нажатия Enter

Read-Host "Нажмите Enter"

Работа с процессами

#Задача: убить все процессы с именем Notepad # Способ №1 get-process Notepad | Stop-Process # Способ №2 (Работает только с одним процессом) $plist = get-process Notepad $plist.Kill() # Способ №3 (то же что и 2, но все процессы) $plist = get-process Notepad $plist | ForEach-Object {$_.Kill()} #Получить процессы и даты их запуска: Get-Process| Format-Table Name,StartTime -AutoSize

Инкремент

$i++ - в момент вызова i имеет старое значение, но после увеличивается на 1++

++$i - в момент вызова i увеличивается на 1

Массивы

$array = 17,15,160 #создали масив из трех элементов $array -contains $element #содержит ли массив элемент $file1 #0-й элемент массива $file1.count #размер масива #удаление элемента "asdf" из массива $array = @("adsf","adf","erge") $array = $array |? {$_ -ne "adf"} #получаем только уникальные элементы массива $a = @(1,2,3,4,5,5,6,7,8,9,0,0) $a = $a | select -uniq #индекс первого вхождения элемента в массив $array.indexOf("cde")

Конструкция If Elseif Else

if ($i -eq 0) { Write-Host("i равно нулю") } ElseIf ($i -eq 1) { Write-Host("i равно одинице") } Else { Write-Host("i не равно нулю или одинице") }

Цикл ForEach

$services = Get-Service ForEach ($service in $services) { $service.Stop() } 65 #конвертация ASCII-кода в символ "A" #конвертация символа в ASCII-код "Hello" #конвертация строки в ASCII-коды

Ждем нажатия любой клавишы:

$HOST.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") | OUT-NULL $HOST.UI.RawUI.Flushinputbuffer() $host.ui.RawUI.WindowTitle = "elimS Window Title" #задаем заголовок окна

Типы данных в PowerShell

Наиболее распространенные типы:

Fixed-length string of Unicode characters A Unicode 16-bit character An 8-bit unsigned character 32-bit signed integer 64-bit signed integer Boolean True/False value A 128-bit decimal value Single-precision 32-bit floating point number Double-precision 64-bit floating point number Date and Time Xml object An array of values Hashtable object

Еще есть такие встроенные константы: $true, $false, $null

Unicode: To encode a Unicode character in a PowerShell string, prefix the unicode with 0x and cast it to System.Char:

PS > 0x263a ☺

Преобразование типов данных

To force a conversion to a specific datatype, prefix the value or variable with the type in square brackets, this is known as a Cast Operator and forces the chosen datatype:

PS C:\> "0064" 64 PS C:\> $false 0 PS C:\> ("0x" + "FF") 255

Testing DataTypes

PS C:\> 32 -is
True PS C:\> $true -is
True

Функции в Powershell

function elimS { #функция имеющая несколько входных параметров param($string = "значение по умолчанию", $integer = 7) #входящие параметры write-host "string = " $string " | integer = " $integer } elimS #вызов функции без определения параметров, параметры примут значение по умолчанию $string = "test string" $integer = 911 elimS $string $integer #так вызывать функцию правильно - разделяем параметры пробелом elimS -integer $integer -string $string #так тоже правильно $global:var1 = "test" - глобальная переменная, таким образом можно передавать значение переменных из функций.

Еще по поводу того, как передавать множество параметров в функцию:

Остальное

get-host #показать версию powershell Clear-RecycleBin c: -Force #очистка корзины Compress-Archive -Path C:\test\* -DestinationPath C:\archive\test1.zip #архивируем папку Expand-Archive -Path C:\temp\test1.zip "C:\test\New folder\" #рапаковуем архив (Get-CimInstance Win32_operatingSystem).lastbootuptime #показать время загрузки системы write-host $sleep_array.GetType().FullName #показать тип переменной switch ($a) { #case - множественный if 1 {$b = $b+10 } 2 {$b = $b+20 } 3 {$b = $b+30 } 4 {$b = $b+40 } default {$b = $b+50} } Get-Content -Path "C:\scripts\test.txt" -Wait #аналог tail в linux

Командлеты powershell

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

Copy-Item - копирует элемент из одного местоположения в пространстве имен в другое. Командлет Copy-Item не удаляет копируемые элементы. Типы элементов, которые может копировать командлет, определяются наличием поставщиков Windows PowerShell. Например, при использовании командлета с поставщиком FileSystem копируются файлы и папки, а при работе с поставщиком реестра копируются разделы и записи реестра.

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

Remove-Item - удаляет один и более элементов. Данный командлет поддерживается многими поставщиками, поэтому он может удалять элементы различных типов, включая файлы, каталоги, разделы реестра, переменные, псевдонимы и функции.

Get-ChildItem - получает элементы из заданных местоположений. Если элемент является контейнером, данный командлет получает из контейнера элементы, которые называются дочерними элементами. Для извлечения элементов из всех дочерних контейнеров можно использовать параметр Recurse. Местоположение может являться расположением в файловой системе, например каталогом, либо расположением, предоставляемым другим поставщиком, например кустом реестра или хранилищем сертификатов.

Параметры командлетов powershell

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

  • Continue - вывести сообщение об ошибке и продолжить выполнение
  • SilentlyContinue - проигнорировать ошибку и продолжить
  • Stop - при первой же ошибке прервать выполнение
  • Inquire - при возникновении ошибки вывести запрос что делать дальше

Пример: Copy-Item "d:\test1\klbackup*" "d:\test2\" -ErrorAction stop

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

get-help about_CommonParameters - описание параметров, которые могут использоваться с любым командлетом.

SSH через Powershell

Пример того, как можно работать через SSH:

#устанавливаем модуль SSH, один раз Find-Module Posh-SSH | Install-Module #Создаем SSH сессию: Import-Module Posh-SSH $ComputerName = "1.2.3.4" $UserName = "ubuntu" $KeyFile = "C:\SSH\key.pem" $nopasswd = new-object System.Security.SecureString $Crendtial = New-Object System.Management.Automation.PSCredential ($UserName, $nopasswd) $SSHSession = New-SSHSession -ComputerName $ComputerName -Credential $Crendtial -KeyFile $KeyFile #Создаем шелл: $SSH = $SSHSession | New-SSHShellStream # отправляет команду $SSH.WriteLine("ifconfig") # считываем ответ $SSH.read() #закрываем сессию: $sshSession | Remove-SSHSession

Команды:

  • Get-SSHTrustedHost - посмотреть доверенные хосты
  • Get-SSHSession - посмотреть список открытых сессий
  • Remove-SSHSession - закрыть сессию

Примечание. Можно использовать этот модуль, не устанавливая WMF 5.0. Предварительная версия модуля для PS 4.0 и 3.0 доступна отдельно - март 2016 , а более свежие ищите поиском в центре загрузки по запросу PackageManagement PowerShell Modules Preview .

Установка программ

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

#Разрешить установку подписанных пакетов из Интернета Set-ExecutionPolicy RemoteSigned #Установить поставщик Chocolatey Get-PackageProvider –Name Chocolatey -ForceBootstrap #Сделать Chocolatey доверенным Set-PackageSource -Name Chocolatey -Trusted #Установить программы Install-Package NotepadPlusPlus, vlc, firefox, filezilla, sysinternals -Verbose -Force -ProviderName chocolatey #Добавить путь к исполняемым файлам (sysinternals) в PATH setx PATH "$env:path;C:\Chocolatey\bin" -m

Поставщик скачивает в C:\Chocolatey\lib пакет, в основе которого лежит скрипт chocolateyInstall.ps1. Он загружает установщик программы с официального сайта в папку %temp%\Chocolatey и запускает его в режиме тихой установки. Простейший пример – Notepad++.

Install-ChocolateyPackage "notepadplusplus" "exe" "/S" "https://notepad-plus-plus.org/repository/6.x/6.9/npp.6.9.Installer.exe"

Поиск программ

В репозиториях много программ, все самые популярные точно есть.

Find-Package "*zip*","*commander*" -ProviderName Chocolatey

Типы инсталляторов и ключи тихой установки

  • Сайт автоустановки Windows и форум автоустановки программ
  • Установка обновлений Windows через Powershell

    • Качаем модуль Windows Update PowerShell Module с сайта microsoft .
    • Распаковываем архив в папку %WINDIR%\System32\WindowsPowerShell\v1.0\Modules
    • Если еще не разрешали запускать локальные скрипты, то разрешаем это делать: "Set-ExecutionPolicy RemoteSigned".
      • Проверить можно при помощи команды "Get-ExecutionPolicy": должно быть "RemoteSigned" вместо "Restricted"
    • Импортируем скачанный модуль командой: "Import-Module PSWindowsUpdate"
    • Готово. Теперь можно использовать команды:
      • Посмотреть список доступных обновлений : Get-WUInstall -ListOnly
      • Установить все обновления не спрашивая подтверждения : Get-WUInstall -AcceptAll
      • Установить все обновления не спрашивая подтверждения и отложить перезагрузку : Get-WUInstall -AcceptAll -IgnoreReboot
      • Установить определенные обновления зная их номер: "Get-WUInstall -KBArticleID KB3066441, KB3078676 -AcceptAll -IgnoreReboot" - теперь не нужно заходить на сайт microsoft и выкачивать их вручную
      • Подробная справка по модулю: get-help Get-WUInstall -detailed
      • Посмотреть список доступных обновлений исключив категорию "Language packs", заголовки "Skype" и обновление KB3012973: Get-WUInstall -NotCategory "Language packs" -NotTitle Skype -NotKBArticleID KB3012973 -ListOnly
      • Установить обновления исключив категорию "Language packs", заголовки "Skype" и обновление KB3012973: Get-WUInstall -NotCategory "Language packs" -NotTitle Skype -NotKBArticleID KB3012973 -AcceptAll -IgnoreReboot

    Привет. =)
    Очередная богомерзкая статья про администрирование Windows Server посвящена первоначальной подготовке ОС к использованию. Избалованный тем, что в базовой версии Windows Server с GUI (Graphical user interface ), а так же в Windows Server 2012 Core и выше, Powershell уже установлен, я был весьма сильно озадачен тем, что в Windows Server 2008R2 Core им и не пахнет. Т.к. уставновка не была сильно очевидной и мне пришлось полазить по гуглу и технету, я решил набросать небольшую заметку на будущее.

    Итак, сперва мы получим в свое распоряжение хотя бы PowerShell 2.0 (на самом деле этот шаг можно и пропустить, сделав всё нижеописнное в cmd, но я начал с этого). Сделать это можно двумя путями: запустив утилиту sconfig.cmd в командной строке или через DISM (Deployment Image Servicing and Management ) там же. Первая предлагает нам псевдографический интерфейс, где под пунктом 4 мы и найдем возможность установить PS 2.0.

    Через DISM это делается следующим образом:
    dism.exe /online /enable-feature:MicrosoftWindowsPowerShe ll

    Установив PS, перезагрузившись и получив в свое распоряжение чуть более адекватный инструмент мы попытаемся обновить его до актуальной версии. На момент написания статьи ей является версия 4.0 или же preview-версия 5.0. Для меня минимально пригодной к применению является версия 3.0, в которой уже есть множество командлетов для управления ролями и ресурсами сервера, которые отсутствуют во второй версии. Windows PowerShell 3.0 требует наличия в системе.Net Framework 4.0 и выше.
    Если попытаться сейчас установить.Net 4.0, мы узнаем, что для этого нам необходим уже установленный.Net 2.0, который почему-то отсутствует в редакции Server Core. Забавно, но по привычке скачав инсталлятор и запустив его, мы получим отказ в установке и замечение о необходимости использования dism.exe. >_< OK, dism, так dism. Уставливается по аналогии с PS:
    dism.exe /online /enable-feature:NetFx2-ServerCore
    dism.exe /online /enable-feature:NetFx2-ServerCore-WOW64

    Следующим шагом будет обновление.Net Framework до актуальной версии. Хотите использовать Powershell 3.0, ставьте.Net 4.0, а хотите последнию версию, потребуется.Net 4.5.1 и выше. Выбор за вами, его установка предельно проста. Загвоздка может быть лишь в получении пакета инсталлятора - я подключал к серверу сетевой диск, на который выкладывал все установочные файлы; вы можете использовать любой для вас удобный носитель информации.

    Итак, мы подготовили базу для установки PS версии 3.0 и выше. Следующим шагом будет загрузка инталлятора Windows Management Framework и его установка. Скачиваем и запускаем KB2819745 нужной нам архитектуры:

    Традиционно, после установки нам потребуется перезагрузка, выполнив её, мы получим в своё распоряжение PowerShell 4.0.

    Кстати, чтобы иметь возможность пользоваться командлетом Add-WindowsFeature (переименован в Install-WindowsFeature в Windows Server 2012) для настройки ролей сервера, потребуется уставнока компонентов Server Manager через всё тот же DISM.EXE. Выглядит это так:
    dism.exe /online /enable-feature:ServerManager-PSH-Cmdlet s
    Вообще, я сильно избалован последними версиями PS, т.к. занялся им уже после выхода третьей версии, но как оказалось, для установки ролей можно ограничиться и dism.exe. А если вы не знаете названия нужной вам фичи, то всегда можно поглядеть все доступные варианты и их состояние через параметр /get-features. Но как по мне, так Get-WindowsFeature гораздно информативнее. =)
    dism.exe /online /get-features vs. Get-WindowsFeature

    0
    Применимо к:
    Office 365 for professionals and small businesses, Office 365 for enterprises, [email protected]
    Windows XP, Windows Vista, Windows Server 2003, windows 7 и Windows Server 2008

    Перед началом использования Windows PowerShell следует убедиться в том, что на компьютере установлены и настроены правильные версии Windows PowerShell и службы удаленного управления Windows (WinRM). Необходимо использовать среду управления Windows Management Framework, включающую правильные версии Windows PowerShell v2 и WinRM 2.0.

    Если компьютер работает под управлением системы Windows 7 или Windows Server 2008 R2, ничего устанавливать не требуется. Среда Windows Management Framework уже установлена.

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

      Windows Vista с пакетом обновления 1 (SP1) или 2 (SP2);

      Windows Server 2008 с пакетом обновления 1 (SP1) или 2 (SP2);

      Windows Server 2003 с пакетом обновления 2 (SP2);

      Windows XP с пакетом обновлени 3 (SP3).

    Приступим к работе:

    1. Удаление предыдущих версий Windows PowerShell с компьютера

    Перед установкой среды Windows Management Framework нужно удалить все имеющиеся версии Windows PowerShell.

    1.1 Удаление Windows PowerShell из системы Windows Vista

      В группе «Программы» панели управления откройте раздел «Программы и компоненты» и удалите все экземпляры Windows PowerShell, присутствующие в списке установленных программ. Например, CTP-версия Windows PowerShell v2 может отображаться как «Windows PowerShell (TM) V2».

      В разделе «Задачи» выберите пункт «Просмотр установленных обновлений» и удалите все экземпляры Windows PowerShell, присутствующие в списке установленных обновлений. Например, версия Windows PowerShell V1 может отображаться как обновление Windows с одним из следующих номеров статей в базе знаний Майкрософт:

    1.2 Удаление Windows PowerShell из системы Windows Server 2008

      Запустите диспетчер сервера и откройте раздел «Компоненты».

      1. Выберите пункт «Удалить возможности».

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

      На панели управления в группе «Программы» откройте элемент «Программы и компоненты» и удалите все экземпляры Windows PowerShell, находящиеся в списке установленных программ.

      В группе «Задачи» выберите элемент «Просмотр установленных обновлений». Удалите все экземпляры Windows PowerShell, присутствующие в списке установленных обновлений.

    1.3 Удаление Windows PowerShell из системы Windows Server 2003 или Windows XP

      Откройте в панели управления компонент «Установка и удаление программ» и удалите все экземпляры Windows PowerShell, присутствующие в списке установленных программ.

      В разделе «Установка и удаление программ» выберите команду «Показать обновления». Удалите все экземпляры Windows PowerShell, присутствующие в списке установленных обновлений. Например, версия Windows PowerShell V1 может отображаться как обновление Windows со следующим номером статьи в базе знаний Майкрософт: KB926139.

    2. Удаление предыдущих версий WinRM с компьютера

    Перед установкой среды Windows Management Framework необходимо удалить все имеющиеся версии WinRM.

    2.1 Удаление WinRM из системы Windows Vista или Windows Server 2008

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

      В группе «Задачи» выберите элемент «Просмотр установленных обновлений». Удалите все экземпляры службы удаленного управления Windows, присутствующие в списке установленных обновлений. Например, CTP-версия WinRM 2.0 может отображаться как «WindowsRemoteManagement» с одним из следующих номеров статей в базе знаний Майкрософт:

    2.2 Удаление Windows PowerShell из системы Windows Server 2003 или Windows XP

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

      В разделе «Установка и удаление программ» выберите команду «Показать обновления». Удалите все экземпляры службы удаленного управления Windows, присутствующие в списке установленных обновлений. Например, WinRM может отображаться как обновление Windows со следующим номером статьи в базе знаний Майкрософт: KB936059.

    3. Установка среды Windows Management Framework

      Загрузите и установите среду Windows Management Framework . Выберите содержащий Windows PowerShell v2 и WinRM 2.0 пакет, подходящий для используемой операционной системы, системной архитектуры и языка.

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

    Примечание

    4. Проверка возможности запуска сценариев в Windows PowerShell

      Последовательно выберите пункты «Пуск», «Все программы», «Стандартные», Windows PowerShell.

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

      • При работе в системе Windows Vista, Windows 7 или Windows Server 2008 R2 щелкните правой кнопкой мыши пункт «Windows PowerShell» и выберите команду «Запуск от имени администратора». При появлении приглашения службы контроля учетных записей с запросом на продолжение нажмите кнопку «Продолжить».

        При работе в системе Windows XP или Windows Server 2003 щелкните пункт «Windows PowerShell».

      Выполните следующую команду:

      Get-ExecutionPolicy

      Если возвращенное значение отличается от RemoteSigned , необходимо изменить значение на RemoteSigned .

      Примечание

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

    Подготовка к запуску сценариев в Windows PowerShell

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

    Set-ExecutionPolicy RemoteSigned

    5. Проверка наличия в WinRM разрешения на подключение Windows PowerShell

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

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

      • При работе в системе Windows Vista, Windows 7 или Windows Server 2008 R2 щелкните правой кнопкой мыши пункт «Командная строка» и выберите команду «Запуск от имени администратора». При появлении приглашения службы контроля учетных записей с запросом на продолжение нажмите кнопку «Продолжить».

        При работе в системе Windows XP или Windows Server 2003 выберите пункт «Командная строка».

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

      winrm get winrm/config/client/auth

      Примечание

      Если служба WinRM уже работает, запускать ее не требуется. Состояние службы WinRM можно проверить, запустив команду sc query winrm .

    В результатах найдите значение Basic = . Если указано значение Basic = false , то его необходимо изменить на Basic = true .

    Примечание

      Если служба WinRM запущена и значение Basic изменять не требуется, выполните команду net stop winrm , чтобы остановить службу WinRM.

    Включение поддержки обычной проверки подлинности в WinRM

      В открытом от имени администратора окне командной строки выполните следующие команды: Значение в фигурных скобках { } вводится с учетом регистра:

      winrm set winrm/config/client/auth @{Basic="true"}

      Проверьте наличие значения Basic = true в выходных данных команды.

      Примечание

      Если служба WinRM запущена, выполните команду net stop winrm , чтобы остановить ее.

    Следующее действие .

    Сегодня я покажу, как установить и использовать модуль администрирования Active Directory для Windows PowerShell. Командлеты этого модуля можно использовать для получения информации и управлением различными объектами и параметрами AD. Данный модуль в серверных ОС устанавливается в виде отдельного компонента. На десктопные ОС (Windows 10, 8.1, 7) придется установить пакет Remote Server Administration Tools (RSAT) в состав которого входит модуль для взаимодействия с AD из PowerShell. Кроме этого модуля в состав RSAT входят все необходимые графические оснастки управления, утилиты командной строки и модули Windows PowerShell для администрирования Windows и AD. Данный пакет для вашей версии ОС нужно самостоятельно скачать с сайта Microsoft.

    Установка модуля Active Directory для Windows PowerShell

    Модуль Active Directory для Windows PowerShell впервые появился в Windows Server 2008 R2. Он автоматически устанавливается на . Для использования комадлетов PowerShell из модуля AD в домене должен быть хотя бы один контроллер с Windows Server 2008 R2 или выше. Если в вашей сети имеются DC только с Windows Server 2003 и 2008, необходимо скачать и установить Active Directory Management Gateway Service. Командлеты PowerShell из модуля Active Directory взаимодействуют с веб-сервисом, который является частью контролера домена с ролью ADDS.

    Вы можете установить модуль Active Directory для Windows PowerShell не только на контроллер домена, но и на любой рядовой сервер домена или рабочую станцию. В Windows Server 2016 установить модуль Active Directory для Windows PowerShell можно из графической консоли Server Manager с помощью мастера добавления ролей и компонентов. Достаточно запустить мастер и на этапе выбора компонентов нужно выбрать пункт Средства удаленного администрирования сервера -> Средства администрирования ролей -> Средства AD DS и AD LDS -> Модуль Active Directory для Windows PowerShell (Remote Server Administration Tools > Role Administration Tools > AD DS and AD LDS Tools ->Active Directory module for Windows PowerShell).

    Данный модуль можно установит и с помощью PowerShell. Откройте консоль PowerShell с правами администратора и выполните команды:

    Import-Module ServerManager
    Add-WindowsFeature -Name "RSAT-AD-PowerShell" –IncludeAllSubFeature

    В Windows 10, Windows 8.1 и Windows 10 для установки модуля RSAT-AD-PowerShell нужно сначала установить соответствующую версию RSAT, после этого модуль нужно включить в Панели управления (Панель управления -> Программы ->Программы и компоненты и нажмите «Включить компоненты Windows» -> Remote Server Administration Tools -> Role Administration Tools -> AD DS and AD LDS Tools -> включите компонент Active Directory Module for Windows POwerShell.

    Либо можно установить модуль с помощью PowerShell:

    Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell

    Импорт и использование модуля PowerShell для Active Directory

    В Windows 7 и Windows Server 2008 R2, на которых установлен PowerShell 2.0, чтобы начать пользоваться модулем AD необходимо импортировать его в сессию PowerShell командой:

    Кроме того, вы можете экспортировать модуль с удаленной машины, где он уже установлен и импортировать его в свою сессию PowerShell:

    $MySession = New-PSSession -ComputerName MyDomainController
    Export-PSsession -Session $MySession -Module ActiveDirectory -OutputModule RemoteADPosh
    Remove-PSSession -Session $MySession
    Import-Module RemoteADPosh

    В Windows Server 2012 R2/ 2016 и Windows 8.1 / Windows 10 модуль (если он установлен) импортируется в сессию автоматически.

    Если компьютер включен в домен, по умолчанию создается диск по имени AD:. .Вы можете перейти на этот диск командой CD и использовать привычные команды работы с файловой системой для навигации по этому диску. Пути представлены в формате X500.

    PS C:\> cd AD:
    PS AD:\> dir

    PS AD:\> cd "DC=vmblog,DC=ru"

    Вывести список доступных командлетов модуля для работы с Active Directory можно так:

    Get-Command -Module ActiveDirectory

    В различных версия Windows доступно разное количество командлетов:

    • Windows Server 2008 R2 — 76 командлетов.
    • Windows Server 2012 — 135 командлетов
    • Windows Server 2012 R2 / 2016 — 147 командлетов.

    Итак, теперь вы можете использовать командлеты PowerShell для администрирования AD. На нашем сайты вы можете познакомиться с использованием следующих командлетов из модуля AD для PowerShell: , .