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チェックごとに新しい変数を作成せずに、必要なすべてのパラメーターを1行で呼び出す方法はありますか?そうすると、不足しているすべての役割と機能に対して1回の再起動のみが必要になるためです。

前もって感謝します。

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

パラメータ名は、を受け入れますが、string arrayを受け入れませんstring。あなたのコードでは、私が上で書いたようにコンマを削除する必要があります。

于 2012-06-06T08:34:07.867 に答える