使用 Powershell 3.0 在远程服务器 2012 上安装 Windows 功能



我想知道考虑到这两个示例可能有效的最佳实践。使用内置的帮助示例,我编写了一个脚本来在远程服务器上安装 Windows 功能。这是我的代码:

$servers = ('server1', 'server2', 'server3', 'server4')
ForEach ($server in $servers) {
    Install-WindowsFeature -Name Desktop-Experience -ComputerName $server -IncludeAllSubFeature -IncludeManagementTools -Restart
}

以上是首选还是我应该包装"安装Windows功能..."在如下所示的"调用命令"块中?

Invoke-Command -ComputerName server1, server2, server3, server4 -command {
    Install-WindowsFeature -Name Desktop-Experience -ComputerName $server -IncludeAllSubFeature -IncludeManagementTools -Restart
}

感谢您的见解!

在这种情况下,

我会使用后者(直接调用Install-WindowsFeature -ComputerName $server而不是做单独的Invoke-Command),原因如下:

  1. 您现在可能正在对功能名称进行硬编码,但将来您可能希望将它们放在变量中。如果将它们放在变量中,则必须将其作为参数传递到Invoke-Command的脚本块中。这是完全可能的,但需要做更多的工作。
  2. 通过使用自己的循环,您可以编写进度消息、日志记录等。
  3. 在这种情况下,使用
  4. Invoke-Command 没有任何好处,因为您在远程计算机上运行单个命令(而不是使用-ComputerName参数运行多个命令,而不是在脚本块中运行多个命令)。

最新更新