Назад | Перейти на главную страницу

Как включить или отключить функции Windows с помощью PowerShell или командной строки в Windows 7?

Я написал сценарий против sysocmgr в Windows XP, servermanagercmd в server 2008, и теперь я обнаружил, что мне нужно использовать новый модуль PowerShell servermanager для установки функций на Server 2008 R2, поэтому я ожидал, что буду использовать тот же модуль в Windows 7, но его там нет.

Как установить компоненты Windows с помощью командной строки или PowerShell в Windows 7?

Для правда PowerShell, вам необходимо загрузить Windows AIK для 8.0 и использовать dism module. Это найдено в

C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit\Deployment Tools\<arch>\DISM

и вы можете просто указать PowerShell в эту папку с помощью

Import-Module C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit\Deployment Tools\<arch>\DISM

Убедитесь, что вы заменили <арка> с архитектурой машины, на которой работает Powershell. Эту папку DISM можно даже скопировать и при необходимости распространить на машины (говоря о функциональности, я не знаю, действительно ли перераспределение разрешается от Microsoft).

Специальная команда для удаления необязательной функции Windows:

Get-WindowsOptionalFeature -Online | where FeatureName -eq mediacenter

Это вернет Microsoft.DISM.Commands.BasicFeatureObject, как видно Вот. Оттуда вы можете установить state свойство отключено, например

$(Get-WindowsOptionalFeature -Online | where FeatureName -eq mediacenter).state = 
    [Microsoft.DISM.Commands.FeatureState]::Disabled

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

Также для этого модуля требуются WMF 3.0 и который требуется .NET 4.0, просто к сведению.

Попытка запустить PowerShell из Windows 7/8 даст вам только следующее:

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

dism это единственный способ, который работает.

Добавьте ServerManager-функцию вручную. Затем вы можете добавить модуль servermanager:

модуль импорта servermanager

get-windowsfeature

ocsetup.exe /?

Похоже, что помимо удаления вы также можете использовать ocsetup который устанавливается по умолчанию в Windows Vista и Windows Server 2008. Если вы хотели написать сценарий, который работает во всех трех из них, то это, вероятно, будет подходящим вариантом.

Для части Powershell откройте приглашение «Модули Windows Powershell» и введите

PS1> Add-WindowsFeature [название функции]

например

Добавить-WindowsFeature SMTP-сервер

Get-WindowsFeature показывает названия всех доступных функций

Вы можете использовать удаленный сеанс из Windows 7 в окно Windows Server 2008 R2 и запустить Add-WindowsFeature. Мне не удалось найти его на Win7 даже с установленным RSAT.