2

我为 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在一行中调用我需要的所有参数,而无需为每次检查创建一个新变量,因为这样我只需要重新启动所有缺少的角色和功能?

提前致谢。

4

1 回答 1

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>]

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

于 2012-06-06T08:34:07.867 回答