用于在多台计算机上配置限制的 Windows PowerShell 脚本

此示例演示了使用 Windows PowerShell 脚本为属于场一部分的多台计算机配置服务限制默认值所需的步骤。可以很容易地对此示例进行修改以更改任何其他 AppFabric 可访问的设置。

在维护包含多台计算机的服务器场时,分别连接每台计算机并更改每个设置可能会非常繁琐。当场中有许多计算机,或者非常频繁地发生这种更改时,这就变成了一个大问题。随着 Windows Server AppFabric 暂留和监控功能的引入,有一种非常容易的方法可直接从数据库中提取有关场中活动计算机的信息,并使用该信息在这些计算机上运行 Windows PowerShell 命令。

本示例演示了如何提取场中计算机的场信息,以及如何在场中的所有活动计算机上运行 Windows PowerShell cmdlet。

本示例适用于任何应用程序。我们建议使用常见 AppFabric 示例应用程序,它是特为 AppFabric 示例而创建的。若要找到此应用程序,请导航到 <samples>\SampleApplication\OrderApplication 文件夹,其中 <samples> 是 AppFabric 示例的安装路径。

备注

提供这些示例仅是为了教育目的。它们不能用于生产环境,并且尚未在生产环境中进行测试。Microsoft 不对这些示例提供技术支持。

先决条件

此示例可以在在符合以下先决条件的一台或多台计算机上运行。如果您要在一台计算机上运行本示例,则可以忽略为多台计算机提供的参考。

  • 您必须在所有参与此示例的计算机上安装 AppFabric,并且所有计算机都必须为暂留和/或监控使用一个公用数据库。

  • 若要运行提供的脚本,需要在运行本示例的计算机上拥有管理权限。根据您要进行的修改,可能需要拥有所有其他计算机的管理权限。

  • 所有参与的计算机都必须加入到一个域中,并且都必须安装了 Windows 远程管理 (WinRM) 2.0。可以从 WinRM 2.0 下载 (https://go.microsoft.com/fwlink/?LinkId=194424) 下载适用于下层平台的 WinRM 2.0 CTP3。可以修改本示例以在非域环境中运行。请参阅对于 about_Remote_FAQ (https://go.microsoft.com/fwlink/?LinkId=194425) 上“有关 Windows PowerShell 远程控制功能的常见问题解答”中“可以在单台计算机上(而不是在域中)测试远程控制功能吗?”问题的解答。

  • 对于远程执行,必须启用 Windows PowerShell。可以在满足前两个先决条件之后运行 Enable-PSRemoting -force 来完成该操作。若要了解有关 Windows PowerShell 远程控制功能的详细信息,请键入 help about_remote

  • 示例中的所有计算机都必须属于场的一部分(即,所有这些计算机上都必须安装了相同的应用程序和服务)。此外,它们还必须向公用数据库至少保存或报告了一次监控数据。

  • 必须在要执行此示例的主机上安装了适用于 Windows PowerShell 的 SQL 客户端连接和 SQL Server 管理单元。

示例文件

  • Get-ASActiveMachine.ps1 脚本(位于 Code 文件夹中)

  • 自述文档

设置和运行此示例

  1. 以管理员身份运行 Windows PowerShell 主机(如随 Windows PowerShell 2.0 一起提供的控制台)。在运行主机时,如果不是以内置帐户“管理员”身份运行,则务必选择“以管理员身份运行”。

    备注

    若要运行本示例,您需要允许未签名的脚本在此计算机上运行。以下步骤演示如何执行该操作。

  2. 在主机中,执行命令:Set-ExecutionPolicy Unrestricted。此命令允许您运行未签名的示例脚本。确保在完成此示例后恢复该设置。如果您要在生产环境中对运行类似的脚本进行评估,我们建议您对脚本进行签名。可以在 about_Signing (https://go.microsoft.com/fwlink/?LinkID=194426) 上了解有关签名脚本的详细信息。

删除本示例

  1. 若要删除本示例,请使用以下命令将 Windows PowerShell 的执行策略恢复到以前的级别或恢复成默认值:Set-ExecutionPolicy Default

说明

此示例划分为两个部分。第一部分解释了如何在一组计算机上运行任何 cmdlet(特别是 AppFabric cmdlet)。第二部分是一个脚本 cmdlet,用于获取场中活动计算机的列表。随后是一个示例,演示了如何使用这两个部分。

远程配置

如果满足了上述所有的先决条件,则可以非常容易地在远程计算机上运行 cmdlet。要使用的 cmdlet 名为 Invoke-Command,它执行的参数包括要运行该 cmdlet 的所有计算机和要在这些计算机上运行的脚本。

Important要点
通过在本示例中执行这些步骤,将更改选择执行该示例的计算机上所有服务的默认“最大并发调用”值。这在生产环境中可能会产生负面效果,因为会将您的服务器暴漏给拒绝服务 (DoS) 攻击或拒绝合法调用者访问。在生产环境中执行以下步骤前,务必先备份您的系统并为您的环境选择相应的值。如果您不确定 MaxConcurrentCalls 应设置的值,则应该与您的软件架构师联系或参阅 MaxConcurrentCalls 属性 (https://go.microsoft.com/fwlink/?LinkId=194427) 上的 WCF 产品文档。

例如,假设您要运行以下 AppFabric 命令:

Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200

若要在名为“Dublin001”和“Dublin002”的一组计算机(两台计算机)上运行此命令,则应该键入类似以下内容的命令:

Invoke-Command -ComputerName Dublin001,Dublin002 -ScriptBlock {Import-Module ApplicationServer; Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200}

请注意,在脚本块定义(大括号中的文本)中,第一个命令是 Import-Module ApplicationServer。这可确保 Invoke-Command 创建的远程环境拥有所有所需的 AppFabric cmdlet。

活动计算机的数据库查询

若要在场中的所有计算机上运行前面的命令,则必须有一个所有计算机的列表,并将其用于为前面示例中的 ComputerName 形式参数中提供实际参数。此外,您可以使用随此示例一起提供的脚本 cmdlet。

此脚本 cmdlet 称为 Get-ASActiveMachine。它使用适用于 Windows PowerShell 的 SQL Server 管理单元从 AppFabric 监控数据中提取活动计算机,然后使用内置 AppFabric cmdlet 从暂留数据中获取活动的计算机列表。最终它将合并这两个结果集并将结果返回给调用者。

若要安装此 cmdlet,请在任何 Windows PowerShell 主机(如随 Windows PowerShell 2.0 一起提供的控制台)中运行以下行:

Import-Module <samples>\Samples\Management\MultiMachineConfiguration\Code\Get-ASActiveMachine.ps1

其中 <samples> 是您安装 AppFabric 示例的路径。

之后,您可以运行以下 cmdlet,它将会返回场中所有活动计算机的列表:

Get-ASActiveMachine

备注

有关此 cmdlet 执行的所有参数列表,以及在没有将 SQL Server 作为默认实例安装在本地和当 AppFabric 监控数据库的名称不是“ApplicationServerMonitoring”时如何使用这些参数,请参阅下文。

返回的列表类似于以下内容:

Dublin001
Dublin002

若要使用此 cmdlet 合并多计算机配置,请运行以下命令:

Invoke-Command -ComputerName (Get-ASActiveMachine) -ScriptBlock {Import-Module ApplicationServer; Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200}

Get-ASActiveMachine 参数

-Server

强制参数。当使用 SQL Server Express 时,请将此参数设置为“<serverName>\SQLExpress”。当使用 SQL Server Enterprise 时,请将此参数设置为“<serverName>”。

-Database

强制参数。指定监控数据库的字符串。

-SiteName

可选参数。让 cmdlet 仅返回指定站点的活动计算机的字符串筛选参数。

-VirtualPath

可选参数。让 cmdlet 仅返回虚拟路径的活动计算机的字符串筛选参数。此字符串可与 -SiteName 参数一起使用,指定 cmdlet 仅返回平衡特定服务负载的计算机。

-ActiveSince

可选参数。可用于仅筛选特定时间段内保存或报告监控数据的计算机的 DateTime 对象。例如,若要返回前 24 小时的数据,请使用:Get-ASActiveMachine –ActiveSince (Get-Date).AddHours(-24)

-ApplicationObject

可选参数。一个 Microsoft.ApplicationServer.Management.Data.ApplicationInfo 对象,可用于仅筛选保存或报告了有关特定应用程序的监控数据的计算机。最好用于管道传输方案,例如 Get-ASApplication –SiteName ‘Default Web Site’ –VirtualPath \OnboardingWorkflow | Get-ASActiveMachine

其他资源

有关远程执行 Windows PowerShell 脚本的其他信息,请参阅 about_Remote (https://go.microsoft.com/fwlink/?LinkId=194428) 或在 Windows PowerShell 主机中键入 help about_remote

  2011-12-05