Обновление:
Так что благодаря 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]
}