Перейти к содержимому

Install windowsfeature не распознано как имя командлета

  • автор:

Когда обновлялась групповая политика

Настройка серверов windows и linux

групповая политика

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов рунета Pyatilistnik.org. В прошлый раз мы с вами разобрали, где скачать библиотеку vcruntime140.dll, отсутствие которой у нас вызывало ошибку установки и запуска некоторых игр. В сегодняшней статье я хочу с вами поделиться уже административным опытом и мы разберем, как определить время последнего обновления групповых политик на компьютере, иногда такая задача у вас может появиться.

Постановка задачи

Методы определения времени применения групповых политик

  • Утилита Gpresult
  • PowerShell
  • Утилита GP Time
  • Rsop
  • Реестр Windows

Как выяснить время обновления GPO через командную строку

gpresult /R

На моем тестовом сервере с Windows Server 2019 я получил, что политика для компьютера применилась в 11:13:20, а вот политика изменяющая конфигурацию пользователя в 11:55:47, это интересно, что все в разное время.

gpresult /R

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

gpresult /scope:user /R

Как выяснить время обновления GPO через командную строку

или более детально отфильтровать через findstr

gpresult /scope:user /R | findstr «Последнее применение групповой политики»

gpresult /scope:user /R | findstr

Как выяснить время обновления GPO через RSOP

RSoP (Resultant Set of Policy) — это отчет обо всех параметрах групповой политики в Active Directory, который показывает, как эти параметры могут влиять на сеть или как существующие объекты групповой политики (GPO) влияют на различные комбинации пользователей и компьютеров, когда локальная политика безопасности прилетели.

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

В результате у вас будет произведен сбор сводных данных

Как выяснить время обновления GPO через RSOP

rsop.msc

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

время обновления gpo

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

Инфраструктура групповой политики

Как выяснить время обновления GPO через PowerShell

Естественно у Microsoft есть отдельные командлеты, который позволяет вычислить время применения GPO, называется они Get-GPResultantSetOfPolicy и Get-GPOReport. Чтобы ими воспользоваться на клиентской системе, такой как Windows 10, вам необходимо установить RSAT пакет и импортировать модуль GroupPolicy. в противном случае вы будите получать ошибку:

Install-WindowsFeature : Имя «Install-WindowsFeature» не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность
написания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:1
+ Install-WindowsFeature –Name GPMC
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Install-WindowsFeature:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Get-GPOReport : Имя «Get-GPOReport» не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени,
а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:1
+ Get-GPOReport
+ ~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-GPOReport:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Install-WindowsFeature

Чтобы иметь возможность использовать эти командлеты, установите пакет RSAT, в операционных системах Windows Server, это не нужно. Далее установите модуль GroupPolicy, через команду:

Install-WindowsFeature –Name GPMC

После его установки введите команду для просмотра доступных модулей:

Get-Command -Module GroupPolicy

  • Get-GPPermissions
  • Set-GPPermissions
  • Backup-GPO
  • Copy-GPO
  • Get-GPInheritance
  • Get-GPO
  • Get-GPOReport
  • Get-GPPermission
  • Get-GPPrefRegistryValue
  • Get-GPRegistryValue
  • Get-GPResultantSetOfPolicy
  • Get-GPStarterGPO
  • Import-GPO
  • Invoke-GPUpdate
  • New-GPLink
  • New-GPO
  • New-GPStarterGPO
  • Remove-GPLink
  • Remove-GPO
  • Remove-GPPrefRegistryValue
  • Remove-GPRegistryValue
  • Rename-GPO
  • Restore-GPO
  • Set-GPInheritance
  • Set-GPLink
  • Set-GPPermission
  • Set-GPPrefRegistryValue
  • Set-GPRegistryValue

Get-Command -Module GroupPolicy

Get-GPResultantSetOfPolicy -ReportType HTML -Path «c:\report.html»

Где -ReportType, это вид конечного файла, может быть и xml, -Path, это путь до конечного файла, подробнее можно почитать на https://docs.microsoft.com/en-us/powershell/module/grouppolicy/get-gpresultantsetofpolicy?view=win10-ps.

Get-GPResultantSetOfPolicy -ReportType HTML

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

Как выяснить время обновления GPO через PowerShell

Так же Get-GPResultantSetOfPolicy может получать данные и с удаленного компьютера, для этого нужно добавить ключ -Computer, в итоге команда примет вот такой вид:

Get-GPResultantSetOfPolicy -Computer dc01 -ReportType HTML -Path «c:\report.html»

Get-GPResultantSetOfPolicy для удаленного компьютера

Как видим отчет получен и данные в нем есть, единственное в моем тесте показалось время обновления только для компьютера, но вам никто не мешает явно задать ключ -user перед -Computer.

время обновления gpo

Как выяснить время обновления GPO через реестр Windows

HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Windows\CurrentVersion\ Group Policy\State\Machine\Extension-List\

тут вы обнаружите 6 ключей:

  • EndTimeHi
  • EndTimeLo
  • LoggingStatus
  • StartTimeHi
  • StartTimeLo
  • Status

Как выяснить время обновления GPO через реестр Windows

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

$RegPath=’HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Extension-List\<00000000-0000-0000-0000-000000000000>‘
$LowTime=Get-ItemProperty -path $RegPath -name «EndTimeLo»
$HighTime=Get-ItemProperty -path $RegPath -name «EndTimeHi»
$CompTime=([long]$HighTime.EndTimeHi -shl 32) + [long] $LowTime.EndTimeLo
[DateTime]::FromFileTime($CompTime)

На выходе я вижу 19 ноября 2019 г. 17:25:51.

Как выяснить время обновления GPO через реестр Windows

Узнаем время обновления GPO через gptime

gptime.exe — это удобная небольшая утилита предназначена для быстрого и краткого отчета о том, когда в последний раз компьютер и пользовательская групповая политика запускались в локальной или удаленной системе. Если в систему вошли более одного пользователя, инструмент сообщит о времени обработки GP для всех найденных пользователей.

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

Скачать gptime.exe вы можете у меня

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

Узнаем время обновления GPO через gptime

Удаленное определение времени применения GPO

Я вам уже неоднократно рассказывал про утилиты Марка Руссиновича PSTools, а конкретнее PsExec. Утилита при наличии административных прав на целевом компьютере может запускать командную строку или оболочку PowerShell из которой уже легко делать, то что нужно. Открываем командную строку, переходим в папку с утилитой PsExec. Подключаться я буду с контроллера домена dc01 к удаленному серверу SVT2019S01. Для начала через команды hostname и whoami я виду исходные данные и, что cmd запущенна именно на исходном сервере.

Удаленное определение времени применения GPO

PsExec64.exe \\svt2019s01.root.pyatilistnik.org -u root\Администратор

\\svt2019s01.root.pyatilistnik.org это имя моего сервера

время обновления gpo через PsExec64.exe

Вас попросит ввести пароль, если кстати не указывать ключ -u, то вам не нужно будет вводить логин и пароль, а будут использоваться текущие данные из под кого запущена командная строка. В итоге я успешно подключился и вижу, что hostname уже SVT2019S01. Далее все просто вы используете утилиту gpresult /R.

время обновления gpo через PsExec

Еще получить данные с удаленного компьютера, вы можете через командлет PowerShell Enter-PSSession. Для этого введите команду:

Enter-PSSession -ComputerName svt2019s01

далее подключившись к серверу вы все так же выполняете gpresult /R.

время обновления gpo через Enter-PSSession

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

Популярные Похожие записи:
  • Как установить vSphere PowerCLI последнюю версиюКак установить vSphere PowerCLI последнюю версию
  • Необходимо запустить инсталлятор от имени администратораНеобходимо запустить инсталлятор от имени администратора
  • Как поменять часовой пояс в Windows Server 2019 и вышеКак поменять часовой пояс в Windows Server 2019 и выше
  • Ошибка запуска службы «error 1069 the service did not start»Ошибка запуска службы «error 1069 the service did not start»
  • Ошибка The number of connections to this computer is limitedОшибка The number of connections to this computer is limited
  • Бесконечное подключение по RDP в Windows 11

Команды DISM и SFC: проверка и восстановление системного образа Windows 10 и 11

date

29.12.2021

user

itpro

directory

Windows 10, Windows 11, Windows Server 2019

comments

комментария 63

Для проверки целостности системных файлов и восстановления поврежденных файлов (библиотек) компонентов в Windows (Windows Server) можно использовать команды SFC и DISM. Эти две утилиты могут быть крайне полезными, если операционная система Windows работает нестабильно, появляются ошибки при запуске стандартных приложений или служб, после вирусного заражения и т.д.

В этой статье мы рассмотрим, как использовать команды sfc /scannow , DISM /Online /Cleanup-Image /RestoreHealth или Repair-WindowsImage -Online -RestoreHealth для восстановления образа и системных фалов в Windows 10/11 и Windows Server 2022/2019/2016.

SFC /scannow: восстановление системных файлов Windows

Перед тем, как восстанавливать образ Windows с помощью DISM, рекомендуется сначала попробовать проверить целостность системных файлов с помощью утилиты SFC (System File Checker). Команда sfc /scannow позволяет проверить целостность системных файлов Windows. Если какие-то системные файлы отсутствуют или повреждены, утилита SFC попробует восстановить их оригинальные копии из хранилища системных компонентов Windows (каталог C:\Windows\WinSxS).

Утилита SFC записывает все свои действия в лог-файл windir%\logs\cbs\cbs.log . Для всех записей, оставленных SFC в файле CBS.log проставлен тег [SR]. Чтобы выбрать из лога только записи, относящиеся к SFC, выполните команду:

findstr /c:»[SR]» %windir%\Logs\CBS\CBS.log >»%userprofile%\Desktop\sfc.txt»

Если команда sfc /scannow возвращает ошибку “ Программа защиты ресурсов Windows обнаружила повреждённые файлы, но не может восстановить некоторые из них / Windows Resource Protection found corrupt files but was unable to fix some of them ”, скорее всего утилита не смогла получить необходимые файла из хранилища компонентов (образа) Windows.

sfc /scannow Программа защиты ресурсов Windows обнаружила повреждённые файлы, но не может восстановить некоторые из них

В этом случае вам нужно попробовать восстановить хранилище компонентов вашего образа Windows с помощью DISM.

После восстановления образа вы можете повторно использовать утилиту SFC для восстановления системных файлов.

Проверка целостности хранилища компонентов Windows с помощью DISM

Утилита DISM (Deployment Image Servicing and Management) доступна во всех версиях Windows, начиная с Vista.

Для сканирования образа Windows на наличие ошибок и их исправления используется параметр DISM /Cleanup-image. Команды DISM нужно запускать из командной строки, с правами администратора.

Чтобы проверить наличие признака повреждения хранилища компонентов в образе Windows (флаг CBS), выполните команду (не применимо к Windows 7/Server 2008R2):

DISM /Online /Cleanup-Image /CheckHealth

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

DISM /CheckHealth - проверка повреждений в образе windows

В этом примере команда вернула, что с образом все хорошо:

No component store corruption detected. The operation completed successfully.

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

DISM /Online /Cleanup-Image /ScanHealth

Команда проверки образа Windows может выполняться довольно долго (от 10 до 30 минут). И вернет один из трех результатов:

  • No component store corruption detected – DISM не обнаружил повреждения в хранилище компонентов;
  • Thecomponentstoreisrepairable – DISM обнаружил ошибки в хранилище компонентов и может исправить их;
  • Thecomponentstoreis not repairable – DISM не может исправить хранилище компонентов Windows (попробуйте использовать более новую версию DISM или вам придется восстанавливать образ Windows из резервной копии, сбрасывать или полностью переустанавливать вашу копию Windows.

DISM Cleanup-Image ScanHealth проверить хранилище компонентов Windows, хранилище компонентов можно исправить

В Windows 7 и Windows Server 2008 R2 для использования параметра DISM /ScanHealth нужно установить отдельное обновление KB2966583. Иначе при запуске DISM будет появляться “ Ошибка 87. Параметр ScanHealth не распознан в этом контексте ”.

Команда DISM /ScanHealth может вернуть ошибки:

Это однозначно говорит о том, что ваш образ Windows поврежден и его нужно восстановить.

Восстановление образа Windows с помощью DISM /RestoreHealth

Чтобы исправить повреждения в хранилище компонентов образа Windows нужно использовать опцию RestoreHealth команды DISM. Эта опция позволит исправить найденные в образе ошибки, автоматически скачать и заменить файлы повреждённых или отсутствующих компонентов эталонными версиями файлов из центра обновлений Windows (на компьютере должен быть доступ в Интернет). Выполните команду:

DISM /Online /Cleanup-Image /RestoreHealth

В Windows 7/2008 R2 эта команда выглядит по другому:
DISM.exe /Online /Cleanup-Image /ScanHealth

Процесс сканирования и восстановления компонентов может быть довольно длительным (30 минут или более). DISM автоматически загрузит недостающие или поврежденные файлы образа с серверов Windows Update.

Восстановление выполнено успешно. Операция успешно завершена.
The restore operation completed successfully.

DISM /Online /Cleanup-Image /RestoreHealth - восстановление образа windows 10

DISM /Source: восстановление образа Windows с установочного диска

Если на компьютере (сервере) отсутствует доступ в Интернет или отключена/повреждена служба Windows Update (как восстановить клиент Windows Update), то при восстановлении хранилища компонентов появятся ошибки:

  • 0x800f0906 — Не удалось скачать исходные файлы. Укажите расположение файлов, необходимых для восстановления компонента, с помощью параметра Источник (0x800f0906 — The source files could not be downloaded. Use the source option to specify the location of the files that are required to restore the feature);
  • Ошибка: 0x800f0950 — Сбой DISM. Операция не выполнена (0x800f0950 — DISM failed. No operation was performed);
  • Ошибка:0x800F081F. Не удалось найти исходные файлы. Укажите расположение файлов, необходимых для восстановления компонента, с помощью параметра Источник (Error 0x800f081f, The source files could not be found. Use the «Source» option to specify the location of the files that are required to restore the feature).

Get-ComputerInfo |select WindowsProductName,WindowsEditionId,WindowsVersion, OSDisplayVersion

powershell Get-ComputerInfo получить номер билда и редакцию windows

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

Get-WindowsImage -ImagePath «D:\sources\install.wim»

В нашем случае образ Windows 11 Pro в образе install.wim имеет ImageIndex = 6 .

index версии windows в wim файле

Для восстановления хранилища компонентов из локального WIM/ESD файла с блокированием доступа в интернет, выполните следующую команду (не забудьте указать ваш индекс версии Windows в файле):

DISM /online /cleanup-image /restorehealth /source:WIM:D:\sources\install.wim:6 /limitaccess
Или:
DISM /online /cleanup-image /restorehealth /source:ESD:D:\sources\install.esd:6 /limitaccess

dism restorehealth source: восстановить хранилище компонентов из оригинального образа Windows на установочном диске, ISO, WIM файле

Если при запуске появляется

    Ошибка Error: 50: DISM does not support servicing Windows PE with the /Online option, значит ваша DISM считает, что вы используете WinPE образWindows. Чтобы исправить это, удалите ветку реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MiniNT.

Утилита DISM пишет подробный журнал сканирования и восстановления системных файлов в файл C:\Windows\Logs\DISM\dism.log .

После восстановления хранилища компонентов вы можете запустить утилиту проверки системных файлов sfc /scannow . Скорее всего она успешно восстановит поврежденные файлы:

Программа защиты ресурсов Windows обнаружила поврежденные файлы и успешно их восстановила.
Windows Resource Protection found corrupt files and successfully repaired them.

sfc /scannow Программа защиты ресурсов Windows обнаружила поврежденные файлы и успешно их восстановила

Если все системные файлы целы, появится сообщение:

Windows Resource Protection did not find any integrity violations

Восстановление образа Windows с помощью PowerShell

В версии PowerShell в Windows 10/11 и Windows Server 2022/2019 есть аналоги рассмотренных выше команд DISM. Для сканирования хранилища компонентов и поиска повреждений в образе выполните:

Repair-WindowsImage -Online –ScanHealth

Repair-WindowsImage -Online –ScanHealth ImageHealth State: Healthy

Если ошибок в хранилище компонентов не обнаружено, появится сообщение:

ImageHealth State: Healthy

Для запуска восстановления системных компонентов и файлов наберите:

Repair-WindowsImage -Online -RestoreHealth

При отсутствии доступа к интернету эта команда может зависнуть в процессе восстановления образа. Вы можете восстановить системные компоненты из локальной копии образа Windows в виде WIM/ESD файла, скопированного с установочного ISO образа Windows 10 (здесь также нужно указать индекс версии Windows в wim файле в качестве источника восстановления):

Repair-WindowsImage -Online -RestoreHealth -Source D:\sources\install.wim:5 –LimitAccess

DISM: восстановление поврежденного хранилища компонентов, если Windows не загружается

Если Windows не загружается корректно, вы можете выполнить проверку и исправление системных файлов в оффлайн режиме.

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

  1. Для этого загрузите компьютер с установочного образа Windows (проще всего создать загрузочную USB флешку с Windows 10/11 с помощью Media Creation Tool) и на экране начала установки нажмите Shift + F10
  2. Чтобы разобраться с буквами дисков, назначенных в среде WinPE, выполните команду diskpart -> list vol (в моем примере диску, на котором установлена Windows присвоена буква C:\, эту букву я буду использовать в следующих командах);diskpart получить буквы дисков
  3. Проверим системные файлы и исправим поврежденные файлы командой: sfc /scannow /offbootdir=C:\ /offwindir=C:\Windows
    sfc /scannow /offbootdir=C:\ /offwindir=C:\Windows
  4. Для исправления хранилища компонентов используйте следующую команду (в качестве источника для восстановления компонентов мы используем WIM файл с установочным образом Windows 10, с которого мы загрузили компьютер):
    Dism /image:C:\ /Cleanup-Image /RestoreHealth /Source:WIM:D:\sources\install.wim:6 Dism /image /RestoreHealth offline в windows 10
  5. Если на целевом диске недостаточно места, то для извлечения временных файлов нам понадобится отдельный диск достаточного размера, например F:\, на котором нужно создать пустой каталог: mkdir f:\scratch и запустить восстановление хранилища компонентов командой:
    Dism /image:C:\ /Cleanup-Image /RestoreHealth /Source:D:\sources\install.wim /ScratchDir:F:\scratch

Совет. Другие полезные команды DISM, которые должен знать администратор:

  • DISM /Add-Package – установка MSU/CAB файлов обновлений, интеграция обновлений в образ Windows;
  • DISM /Get-Drivers – получение списка установленных драйверов;
  • DISM /Add-Driver – добавление драйверов в образ;
  • DISM /Export-Driver – экспорт установленных драйверов Windows;
  • DISM /Add-Capability – установка дополнительных компонентов Windows через Features on Demand (например, RSAT, сервер OpenSSH или ssh клиент Windows;
  • DISM /Enable-Features и /Disable-Features – включение и отключение компонентов Windows (например, протокола SMBv1),
  • DISM /online /Cleanup-Image /StartComponentCleanup – очистка хранилища компонентов и удаление старых версий компонентов (папки WinSxS);
  • DISM /set-edition – конвертирование ознакомительной редакции Windows на полную без переустановки.

How to enable a Windows feature via Powershell

Windows Features

I need to enable two Windows Features using Powershell. But I don’t know their names or how to find them. So far I have managed to install the IIS and stop the Default Application Pool using a script found here.

function InstallFeature($name) < cmd /c "ocsetup $name /passive" >InstallFeature IIS-WebServerRole InstallFeature IIS-WebServer InstallFeature IIS-CommonHttpFeatures InstallFeature IIS-DefaultDocument InstallFeature IIS-DirectoryBrowsing InstallFeature IIS-HttpErrors InstallFeature IIS-HttpRedirect InstallFeature IIS-StaticContent InstallFeature IIS-HealthAndDiagnostics InstallFeature IIS-CustomLogging InstallFeature IIS-HttpLogging InstallFeature IIS-HttpTracing InstallFeature IIS-LoggingLibraries InstallFeature IIS-Security InstallFeature IIS-RequestFiltering InstallFeature IIS-WindowsAuthentication InstallFeature IIS-ApplicationDevelopment InstallFeature IIS-NetFxExtensibility InstallFeature IIS-ISAPIExtensions InstallFeature IIS-ISAPIFilter InstallFeature IIS-ASPNET InstallFeature IIS-WebServerManagementTools InstallFeature IIS-ManagementConsole InstallFeature IIS-ManagementScriptingTools import-module WebAdministration Stop-WebAppPool DefaultAppPool 

Solution To search:

Get-WindowsFeature *ASP* Get-WindowsFeature *activation* 

To install:

Add-WindowsFeature NET-Framework-45-ASPNET Add-WindowsFeature NET-HTTP-Activation 

Kasper Hansen
asked Jan 9, 2013 at 13:33
Kasper Hansen Kasper Hansen
6,377 21 21 gold badges 71 71 silver badges 107 107 bronze badges

4 Answers 4

For newer Windows client OS (Windows 10/8.1/8) you cannot use Install-WindowsFeature as that is only for managing features on servers. Trying to use it will cause an error message:

Get-WindowsFeature : The target of the specified cmdlet cannot be a Windows client-based operating system.

There is a DISM Powershell module that you can use to find and install optional features:

gcm -module DISM #List available commands Get-WindowsOptionalFeature -online | ft #List all features and status Enable-WindowsOptionalFeature -online -FeatureName NetFx3 -Source e:\Sources\sxs 

In the last command -Source e:\Sources\sxs is only required if the feature needs to reference the installation media for source files (usually to fix Error: 0x800f081f The source files could not be found). The .NET Framework version 3.5 seems to be the only one that requires that for the client OS, but there are many others on the Server OS that require referencing the installation media for sources.

answered Dec 30, 2015 at 21:05
15.2k 12 12 gold badges 81 81 silver badges 105 105 bronze badges

if you are in windows 2008R2 there is a module for this :

this module exports 3 cmdlets : Get-WindowsFeature , Add-WindowsFeature and remove-WindowsFeature

so you can make someting like get-windowsfeature *frame* to list the .net features and install it via command like Add-WindowsFeature Net-Framework

answered Jan 9, 2013 at 13:39
Loïc MICHEL Loïc MICHEL
25.3k 9 9 gold badges 75 75 silver badges 104 104 bronze badges

I am in Windows Server 2012, but I still need the exact names of the features or at least how to get a list. Do you know how this is done?

Jan 9, 2013 at 13:40

did you read my answer ?? Use get-WindowsFeature PS it will display the name : Display Name Name ———— —- [ ] Hyper-V Hyper-V [ ] Serveur d’applications Application-Server

Jan 9, 2013 at 14:00

Try this to get the names (short) and display names (long descriptions):
get-windowsfeature | format-table -property name,displayname -AutoSize

use this to install them:
Install-WindowsFeature -Name $Name

where $Name is the name property from the get

PS: Install-WindowsFeature has replaced Add-WindowsFeature

answered Jul 29, 2015 at 13:46
71 1 1 silver badge 3 3 bronze badges

The easiest way (it worked for me) is to:

  • take a computer where the necessary roles and features are not installed
  • go to Add Server Roles and Features (in Server Manager)
  • use the wizard to add the necessary roles and features
  • on the last screen, before pressing the «Install» button, you will notice the link «Export configuration settings»

Save the XML file.

After you have the XML file, you can use the PowerShell script listed below to invoke the «Install-WindowsFeature» cmdlet (Server 2012, 2016).

NOTE1: the PowerShell script was designed to work on Windows Server 2008, 2012 and 2016. For Windows Server 2008 the cmdlet is Add-WindowsFeature.

NOTE2: The PowerShell script assumes the XML file is in the same folder and it’s name is listed inside the script — please see the lines 3 and 4.

Import-Module ServerManager -ErrorAction Stop $win2k8xml = '.\features-w2k8.xml' $win2k12xml = '.\RolesAndFeatures.xml' $minOSVersion = [version] "6.1.7600" # Windows Server 2008 R2 RTM version $os = Get-WmiObject Win32_OperatingSystem $currentVersion = [version]$os.Version if($currentVersion -lt $minOSVersion) < throw "OS version equal or greater than $is required to run this script" > elseif($currentVersion.ToString().substring(0,3) -eq $minOSVersion.ToString().substring(0,3)) < If (!(Test-Path $win2k8xml)) > elseif($currentVersion -gt $minOSVersion) < If (!(Test-Path $win2k12xml)) > $OSVersionName = (get-itemproperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName).ProductName Write-Host "Your OS version is:$OSVersionName" -ForegroundColor Green $defaultComputerName = $env:computername $ComputerName = Read-Host "Computername (Press Enter for current computer - $defaultComputerName)" if ([string]::IsNullOrEmpty($ComputerName)) < $ComputerName = $defaultComputerName; >Write-host "Installation will take place on the following computers: $ComputerName" function Invoke-WindowsFeatureBatchDeployment < param ( [parameter(mandatory)] [string] $ComputerName, [parameter(mandatory)] [string] $ConfigurationFilePath ) # Deploy the features on multiple computers simultaneously. $jobs = @() if(Test-Connection -ComputerName $ComputerName -Quiet)< Write-Host "Connection succeeded to: " $ComputerName if ($currentVersion.ToString().substring(0,3) -eq $minOSVersion.ToString().substring(0,3)) < $jobs += Start-Job -Command < #Add-WindowsFeature -ConfigurationFilePath $using:ConfigurationFilePath -ComputerName $using:ComputerName -Restart $import = Import-Clixml $using:ConfigurationFilePath $import | Add-WindowsFeature >> elseif ($currentVersion -gt $minOSVersion) < $jobs += Start-Job -Command < Install-WindowsFeature -ConfigurationFilePath $using:ConfigurationFilePath -ComputerName $using:ComputerName -Restart >> > else < Write-Host "Configuration failed for: "+ $ComputerName + "! Check computer name and execute again" >Receive-Job -Job $jobs -Wait | Select-Object Success, RestartNeeded, ExitCode, FeatureResult > if ($currentVersion.ToString().substring(0,3) -eq $minOSVersion.ToString().substring(0,3)) elseif ($currentVersion -gt $minOSVersion) Invoke-WindowsFeatureBatchDeployment $ComputerName $FilePath 

PowerShell: системное администрирование и программирование

Всё о PowerShell в Windows и на Linux. Системное администрирование Windows

Как установить и использовать Модуль Active Directory для Windows PowerShell

Модуль Active Directory для Windows PowerShell — один из основных инструментов для администрирования домена, управления объектами в Active Directory и получения различной информации о компьютерах AD, пользователях, группах и т. д. Любой администратор Windows должен знать, как использовать как графическую оснастку AD (обычно это ADUC — Active Directory Users & Computers) и командлеты модуля RSAT-AD-PowerShell для выполнения повседневных задач администрирования Active Directory. В этой статье мы рассмотрим, как установить модуль PowerShell Active Directory в Windows, познакомимся с его основными функциями и популярными командлетами, которые полезны для управления и взаимодействия с AD.

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

Active Directory для Windows PowerShell уже встроен в операционные системы Windows Server (начиная с Windows Server 2008 R2), но по умолчанию не включен.

В Windows Server 2016, 2019 и 2022 вы можете установить модуль AD для PowerShell из Диспетчера серверов (Добавить роли и компоненты → Функции → Инструменты удалённого администрирования сервера → Инструменты администрирования ролей → Инструменты AD DS и AD LDS → Модуль Active Directory для Windows PowerShell).

В англоязычной версии сервера это соответственно в Server Manager: Add Roles and Features → Features → Remote Server Administration Tools → Role Administration Tools → AD DS and AD LDS Tools → Active Directory module for Windows PowerShell.

Если вы уже установили роль Active Directory Domain Services, то это означает, что модуль Powershell Active Directory уже активирован и дополнительных действий предпринимать не нужно.

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

Install-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeature

Вы можете установить RSAT-AD-PowerShell не только на контроллеры домена. Подойдёт любой рядовой сервер домена или даже рабочая станция. Модуль PowerShell Active Directory устанавливается автоматически при развёртывании роли доменных служб Active Directory (AD DS) (при повышении уровня сервера до контроллера домена AD).

Модуль взаимодействует с AD через веб-службу Active Directory, которая должна быть установлена на вашем контроллере домена (связь осуществляется через TCP-порт 9389).

Как установить модуль Active Directory PowerShell в командной строке

Вы можете установить модуль RSAT-AD-PowerShell не только на Windows Server, но и на свои рабочие станции.

Если вы попытаетесь выполнить приведённую выше PowerShell команду:

Install-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeature

то получите сообщение об ошибке:

Install-WindowsFeature: Целевым объектом указанного командлета не может быть клиентская операционная система Windows.

Причём независимо от того, какая у вас редакция Windows: Home, Pro, Enterprise.

Тем не менее, в Windows 10 build 1809 или новее пакет RSAT интегрирован в образ Windows (как компоненты по запросу), поэтому вы можете использовать эту команду PowerShell для установки модуля Active Directory:

Add-WindowsCapability -online -Name "Rsat.ActiveDirectory.DS-LDS.Tools"

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

Как установить модуль Active Directory PowerShell в Windows 11 в графическом интерфейсе

Для установки модуля Active Directory PowerShell в графическом интерфейсе в Windows 11 откройте «Settings» (Параметры), для этого нажмите Win+i и выберите вкладку «Apps» (Приложения), а затем перейдите в «Optional Features» (Дополнительные компоненты).

Теперь выберите «View features» (Просмотр компонентов) в строке «Add an optional feature» (Добавить компонент).

Для установки средств удалённого администрирования Active Directory найдите «RSAT: Active Directory Domain Services and Lightweight Directory Services Tools» (Средства удалённого администрирования сервера: средства доменных служб Active Director и служб облегчённого доступа к каталогам), поставьте галочку и нажмите на кнопку «Next» (Далее),

затем нажмите «Install» (Установить).

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

Чтобы в этом убедиться в строке поиска под надписью «Installed features» (Установленные компоненты) введите название искомого компонента.

Также помните, что в английской и локализованных версиях Windows данные компоненты называются по-разному!

Как установить модуль Active Directory PowerShell в Windows 10 в графическом интерфейсе

Для установки модуля Active Directory PowerShell в графическом интерфейсе, нажмите Win+x, затем в открывшемся меню выбираем «Apps and Features» (Приложения и возможности).

Далее выбираем «Optional Features» (Дополнительные компоненты).

Теперь выбираем «Add a feature» (Добавить компонент).

Для установки средств удалённого администрирования Active Directory выбираем «RSAT: Active Directory Domain Services and Lightweight Directory Services Tools» (Средства удалённого администрирования сервера: средства доменных служб Active Director и служб облегчённого доступа к каталогам) и нажимаем на кнопку «Install» (Установить).

Командлеты Active Directory PowerShell

В модуле Active Directory для Windows PowerShell есть множество командлетов для взаимодействия с AD. Каждая новая версия RSAT содержит больше командлетов, чем предыдущая. В Windows Server 2022 доступно 147 командлетов PowerShell для Active Directory.

Перед использованием командлетов модуля Active Directory вам необходимо импортировать его в сеанс PowerShell:

Import-Module ActiveDirectory

Начиная с Windows Server 2012 R2, Windows 8.1 и в последующих версиях модуль импортируется автоматически.

Если модуль Active Directory не установлен на вашем компьютере, вы можете импортировать его со своего контроллера домена (для этого вам нужны права администратора домена) или с другого настольного компьютера:

$psSess = New-PSSession -ComputerName ИМЯ_КОМПЬЮТЕРА Import-Module -PSsession $psSess -Name ActiveDirectory

В этих командах ИМЯ_КОМПЬЮТЕРА — это компьютер, который является Контроллером Домена, либо компьютером, на котором установлен модуль Powershell Active Directory.

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

Get-Command -module ActiveDirectory

Чтобы посчитать общее количество командлетов в модуле AD выполните команду:

Get-Command -module ActiveDirectory | measure-object | select count

Большинство командлетов RSAT-AD-PowerShell начинаются с префиксов Get-, Set- или New-.

  • Командлеты Get- класса используются для получения различной информации из Active Directory (Get-ADUser — свойства пользователя, Get-ADComputer — настройки компьютера, Get-ADGroupMember — членство в группе и так далее). Чтобы запустить их, вам не нужно быть администратором домена. Любой пользователь домена может запускать команды PowerShell для получения значений атрибутов объекта AD (кроме конфиденциальных, как в примере с LAPS);
  • Командлеты класса Set- используются для установки (изменения) параметров объекта в Active Directory. Например, вы можете изменить свойства пользователя (Set-ADUser), настройки компьютера (Set-ADComputer), добавить пользователя в группу и так далее. Для этого у вашей учётной записи должны быть разрешения на изменение свойств объекта;
  • Команды, начинающиеся с New- позволяют создавать объекты AD (создать пользователя – New-ADUser, создать группу – New-ADGroup);
  • Командлеты Remove- используются для удаления объектов AD.

Так вы можете получить помощь по любому командлету:

Get-Help КОМАНДЛЕТ Get-Help КОМАНДЛЕТ -Full

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

(Get-Help КОМАНДЛЕТ).examples
Get-Help КОМАНДЛЕТ -Examples

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

Администрирование Active Directory с помощью модуля RSAT-AD-PowerShell

Давайте посмотрим на некоторые типичные задачи администратора, которые вы можете выполнять с помощью командлетов Active Directory для PowerShell.

Вы можете найти больше полезных примеров использования командлетов PowerShell для AD на веб-сайте pwsh.ru. Чтобы получить подробные инструкции и примеры использования, переходите по ссылкам, присутствующим в кратком описании каждого командлета.

New-ADUser: создание пользователей AD

Чтобы создать нового пользователя AD, вы можете использовать командлет New-ADUser. Вы можете создать пользователя с помощью следующей команды:

New-ADUser -Name "Mila Beck" -GivenName "Mila" -Surname "Beck" -SamAccountName "mbeck" -UserPrincipalName "mbeck@hackware.ru" -Path "OU=Users,OU=Berlin,OU=DE,DC=ds,DC=hackware,DC=ru" -AccountPassword(Read-Host -AsSecureString "Input User Password") -Enabled $true

Get-ADComputer: получение свойств компьютера

Чтобы отобразить информацию о свойствах компьютера в конкретном подразделении (имя компьютера и дата последнего входа в систему), используйте командлет Get-ADComputer:

Get-ADComputer -SearchBase 'OU=CA,OU=USA,DC=ds,DC=hackware,DC=ru' -Filter * -Properties * | FT Name, LastLogonDate -Autosize

Add-AdGroupMember: добавить пользователя AD в группы

Чтобы добавить пользователей в существующую группу безопасности в вашем домене AD, выполните эту команду:

Add-AdGroupMember -Identity LondonSales -Members e.braun, l.wolf

Отобразить список пользователей в группе AD и экспортировать его в файл CSV:

Get-ADGroupMember LondonSales -recursive | ft samaccountname | Out-File c:\ps\export_ad_users.csv

В предыдущей команде «ft» это командлет Format-Table.

Set-ADAccountPassword: сброс пароля пользователя в AD

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

Set-ADAccountPassword m.lorenz -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "Ne8Pa$$0rd1" -Force -Verbose) -PassThru

Как разблокировать, включить и отключить учётную запись AD?

Чтобы отключить учётную запись пользователя AD:

Disable-ADAccount m.lorenz

Чтобы включить учётную запись:

Enable-ADAccount m.lorenz

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

Unlock-ADAccount m.lorenz

Search-ADAccount: как найти неактивные и отключённые объекты?

Чтобы найти и отключить все компьютеры в домене AD, которые не входили в систему более 90 дней, используйте командлет Search-ADAccount:

$timespan = New-Timespan -Days 90 Search-ADAccount -AccountInactive -ComputersOnly -TimeSpan $timespan | Disable-ADAccount

New-ADOrganizationalUnit: создание организационной единицы в AD

Чтобы быстро создать типичную структуру организационной единицы в AD, вы можете использовать сценарий PowerShell. Предположим, вы хотите создать несколько подразделений с именами состояний и создать в них типичные контейнеры объектов. Создание этой структуры AD вручную с помощью графической оснастки ADUC занимает довольно много времени. Модуль AD для PowerShell позволяет сделать это за секунды (кроме времени на написание скрипта):

$fqdn = Get-ADDomain $fulldomain = $fqdn.DNSRoot $domain = $fulldomain.split(".") $Dom = $domain[0] $Ext = $domain[1] $Sites = ("Nevada","Texas","California","Florida") $Services = ("Users","Admins","Computers","Servers","Contacts","Service Accounts") $FirstOU ="USA" New-ADOrganizationalUnit -Name $FirstOU -Description $FirstOU -Path "DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false ForEach-Object ($S in $Sites) < New-ADOrganizationalUnit -Name $S -Description "$S" -Path "OU=$FirstOU,DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false ForEach-Object ($Serv in $Services) < New-ADOrganizationalUnit -Name $Serv -Description "$S $Serv" -Path "OU=$S,OU=$FirstOU,DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false >>

После запуска сценария в Active Directory появляется следующая структура подразделений.

Move-ADObject: перемещение объектов между контейнерами AD

Чтобы перемещать объекты между контейнерами AD, вы можете использовать командлет Move-ADObject:

$TargetOU = "OU=Sales,OU=Computers,DC=ds,DC=hackware,DC=ru" Get-ADComputer -Filter 'Name -like "SalesPC*"' | Move-ADObject -TargetPath $TargetOU

Get-ADReplicationFailure: проверка сбоев репликации AD

Используя командлет Get-ADReplicationFailure, вы можете проверить состояние репликации между контроллерами домена AD:

Get-ADReplicationFailure -Target NY-DC01,NY-DC02

Get-ADDomainController: Получение информации о контроллерах домена

Чтобы получить информацию обо всех контроллерах домена в домене, используйте командлет Get-AdDomainController:

Get-ADDomainController -filter * | select hostname,IPv4Address,IsGlobalCatalog,IsReadOnly,OperatingSystem | format-table -auto

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

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

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