更新:
因此,由于有了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
原始帖子:
我对Powershell还是陌生的,因此决定是时候从cmd.exe继续进行了某些事情了。
我正在尝试创建一个脚本来在Powershell中循环执行For命令,以安装未安装的所有可选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]
}