Как выполнить цикл команды For для установки дополнительных компонентов Windows 10 PowerShell - PullRequest
1 голос
/ 08 ноября 2019

Обновление:

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

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

string1
string2

должен выглядеть как

"string1","string2"

или в моем конкретном случае

"NetFx3","Netfx4-AdvSrvs"

, когда он вызывается

Enable-WindowsOptionalFeature -Online -FeatureName $Feature

, поэтому каждый вызов выглядит следующим образом: PS

Enable-WindowsOptionalFeature -Online -FeatureName NetFx3
Enable-WindowsOptionalFeature -Online -FeatureName Netfx4-AdvSrvs

Мой текущий скрипт, который не работает должным образом, показывает вам, что выводится в терминале (используя Write-Host для отладки перед переходом на фактический необходимый код)

Мне не повезло получить соответствующий вывод. Самое близкое, что я получил, - это получение первой строки текста в массиве для правильной работы, но любые строки после этого производят только фактическую текстовую строку и не включают Enable-WindowsOptionalFeature -Online -FeatureName, что приводит к сбою искомой команды.

Ниже приведен мой последний скрипт:

$FeatureName = @"
NetFx3
NetFx4-AdvSrvs
"@

$FeatureJoin = (-Join("$FeatureName," +$FeatureName))

ForEach($Feature in $FeatureJoin){
  Write-Host "Enable-WindowsOptionalFeature -Online -FeatureName $Feature"
}

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

Enable-WindowsOptionalFeature -Online -FeatureName NetFx3
NetFx4-AdvSrvs,NetFx3
NetFx4-AdvSrvs

Original-Post:

Я новичок в powershell и решил, что пора переходить от cmd.exe (для некоторых вещей).

Я пытаюсь создать сценарий для зацикливания команды For в powershell для установкипредопределенный список всех необязательных функций Windows, которые не установлены.

Список доступных для установки функций хранится в переменной $FeatureName в самом скрипте, так как я не хочу хранить дополнительные файлы для вызова из.

Я хочу зациклить каждую строку в списке с помощью этой команды (если это правильный / лучший способ достижения моей цели) ForEach-Object Enable-WindowsOptionalFeature -Online -FeatureName [FEATURE_NAME_HERE]

Я совсем не уверен, если яутрадаже близко в моем текущем сценарии.

Вот то, что у меня есть до сих пор. Любая помощь приветствуется.

$FeatureName = @"
ClientForNFS-Infrastructure
FaxServicesClientPackage
IIS-ASPNET45
"@ | Split-String -Separator "`r`n" | ForEach-Object {
Enable-WindowsOptionalFeature -Online -FeatureName [$_FeatureName.text]
}

1 Ответ

1 голос
/ 08 ноября 2019

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

$FeatureName = 'ClientForNFS-Infrastructure', 'FaxServicesClientPackage','IIS-ASPNET45'
foreach($feature in $FeatureName) {Enable-windowsoptionalfeature -online -featureName $feature}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...