我尚未看见许多关于本主题的信息,因此坦白说,我认为需要花些时间,才能取得一些适用于要求管理员 (RM) 的 PowerShell。对于不熟悉 RM 的人来说,这是 SharePoint 2013 的新功能,其设计目的是进行 SharePoint 要求的路由传送与节流处理。藉由具备连入要求本质的知识 (例如,用户代理程序、要求的 URL 或来源 IP),SharePoint 可自定义每个要求的响应。它会根据您定义的规则进行路由传送,或对要求进行完全节流处理。RM 规则会针对每个 Web 应用程序进行套用,就像是在 SharePoint 2010 中进行节流处理一样。
在高阶方面,RM 的目标如下:
•RM 可以路由传送到健康情况较好的 WFE,让健康情况较差的 WFE 保持运作
•RM 可以识别有害的要求并立即拒绝它们
•RM 可以为较低优先级的要求 (Bot) 进行节流处理,为较高优先级的要求 (使用者) 提供服务,藉以设定要求的优先级
•RM 可以传送特定类型的所有要求,例如,搜寻特定计算机
•隔离的流量可以协助疑难解答单一计算机上的错误
•RM 可以将大量要求传送给功能更强大的 WFE
路由传送和节流规则会以如下方式来实作:
•路由传送规则会路由传送要求,并关联至 ">MachinePools
•MachinePools 包含服务器
•服务器会使用权数来进行路由传送 - 静态权数与健康情况权数
•静态权数对于 WFE 而言是固定的;健康情况权数则会根据健康情况分数动态变更
嗯,这就是它们的基本概观 - 如果您想要了解更多关于 RM 的功能与使用方式的详细信息,应该可以在 TechNet 上找到其他文件。如果您正在阅读本文,我假设您已具备足够的相关知识 (或已具备足够的好奇心),想实际利用它来进行一些工作。因此,我将在此处列出一些 PowerShell,以协助您开始使用。我发现了一些使用 RM 时非常有用的 Cmdlet。您经历的基本程序如下:
•取得对于 SPWebApplication 的参考
•取得对于 Web 应用程序之要求管理设定的参考
•建立一或多个条件
◦要求必须符合规则的「所有」条件,才能符合该规则 (就像它们是使用 AND 结合在一起)
•取得对于计算机集区的参考,或视需要建立一个新参考
•新增规则
现在让我们逐步说明下列范例:
#取得对于 SPWebApplication 的参考
$w = Get-SPWebApplication -identity http://foo
#取得对于 Web 应用程序之要求管理设定的参考
$rmset = $w | Get-SPRequestManagementSettings
#建立一或多个条件
$criteria = New-SPRequestManagementRuleCriteria -Property Url -Value ".*\.docx" -MatchType Regex
#取得对于计算机集区的参考,或视需要建立一个新参考
$mp = Add-SPRoutingMachinePool -RequestManagementSettings $rmset -Name MyRulePool -MachineTargets ($rmset | Get-SPRoutingMachineInfo -Name WFE1)
#新增规则
$rmset | Add-SPRoutingRule -Name "Word Doc Rule" -Criteria $criteria -MachinePool $mp
现在让我们来看看该路由传送规则:
$rr = $rmset | Get-SPRoutingRule -Name "Word Doc Rule"
#看一下条件
$rr.Criteria
#变更路由传送规则的到期日与时间
$rr.Expiration = "12/25/2013 5:00:00 PM"
就是这样 - 现在您有了路由传送规则。建立节流规则的方法非常类似:
#新增会寻找 OneNote 要求的新条件规则。它会透过检查要求中的 UserAgent 并寻找 OneNote 所使用的标头来完成此动作。
$criteria = New-SPRequestManagementRuleCriteria -Property UserAgent -Value ".*Microsoft Office OneNote 2010*" -MatchType Regex
#新增节流规则,在服务器健康��况的分数达到 8 时使用条件规则。
#请注意,节流规则会套用到整个 Web 应用程序,#而不是套用到个别计算机,因此,您不能
#将计算机集区与它搭配使用。
$rmset | Add-SPThrottlingRule -Name "OneNote Throttle Rule" -Criteria $criteria -Threshold 8
#现在检视 Web 应用程序的所有路由传送规则
$rmset.RoutingRules
#检视所有节流规则
$rmset.ThrottlingRules
现在让我们深入查看使用计算机集区的方式:
#取得所有可用的路由传送计算机
Get-SPWebApplication | Get-SPRequestManagementSettings | Get-SPRoutingMachineInfo -Availability Available
#取得特定集区中的每一部计算机
Get-SPWebApplication | Get-SPRequestManagementSettings | Get-SPRoutingMachinePool -Name yourPoolName | % { $_.MachineTargets} | Format-Table
#针对特定的 Web 应用程序,将计算机 WFE1 新增至每个计算机集区;万分感谢 Tyler 协助我完成此功能 - 我真的不是 PowerShell 的专业人员
$a = Get-SPWebApplication -Identity http://contoso
$b = $a | Get-SPRequestManagementSettings | Get-SPRoutingMachineInfo -Name WFE1
Get-SPWebApplication | Get-SPRequestManagementSettings | Get-SPRoutingMachinePool | % { $_ | Set-SPRoutingMachinePool -machinetargets ($_.machinetargets + $b) }
#将计算机 WFE1 新增至特定集区
$a = Get-SPWebApplication -Identity http://contoso
$b = $a | Get-SPRequestManagementSettings | Get-SPRoutingMachineInfo -Name WFE1
$pool = $a | Get-SPRequestManagementSettings | Get-SPRoutingMachinePool -Name yourPoolName
$pool | Set-SPRoutingMachinePool -MachineTargets ($pool.MachineTargets + $b)
#从每个计算机集区移除 WFE1
Get-SPWebApplication | Get-SPRequestManagementSettings | Get-SPRoutingMachineInfo -Name WFE1 | Remove-SPRoutingMachineInfo
好了,您已经拥有此功能了,各位。这应该就足以让您开始使用此功能。