使用PowerShell安装多个ServerRoles

时间:2012-06-06 08:23:12

标签: powershell roles

我为Server 2008 R2编写了一个PowerShell脚本,检查是否安装了某些角色和功能,以及是否安装它们(当然我最初导入了ServerManager模块),即:

if ((Get-WindowsFeature AS-NET-Framework).Installed -eq 0)
{$InstallFeatures += "AS-NET-Framework,"
Write-Host "AS-NET-Framework will be added"}

if ((Get-WindowsFeature GPMC).Installed -eq 0)
{$InstallFeatures += "GPMC,"
 Write-Host "GPMC will be added"}

但是当我调用

Add-WindowsFeature $InstallFeatures

它给出了一个错误,即找不到该名称。 不知何故,PS不接受逗号作为字符串中的分隔符。

但是如果你输入

Add-WindowsFeature AS-NET-Framwork,GPMC

在控制台中它可以正常工作。

有没有办法在一行中使用我需要的所有参数调用Add-WindowsFeature而不为每个检查创建一个新变量,因为那样我只需要重新启动所有缺少的角色和功能?

提前致谢。

1 个答案:

答案 0 :(得分:3)

尝试声明:

 [string[]]$InstallFeatures = @()
在您的代码之前

if ((Get-WindowsFeature AS-NET-Framework).Installed -eq 0)
{$InstallFeatures += "AS-NET-Framework"
Write-Host "AS-NET-Framework will be added"}
if ((Get-WindowsFeature GPMC).Installed -eq 0)
{$InstallFeatures += "GPMC"
 Write-Host "GPMC will be added"}

Get-WindowsFeature的签名是:

Get-WindowsFeature [[-Name] <string[]>] [-logPath <string>] [<CommonParameters>]

参数名称接受string array而不是string。 在你的代码中,你需要删除我上面写的逗号。