在 ARR 中使用 Powershell 优雅地使服务器不可用

在 ARR 中使用 Powershell 优雅地使服务器不可用

我们正在使用 ARR 作为反向代理,我想让服务器因各种原因不可用。如何使用 Powershell 来实现这一点?

编辑1:
我找到了这个http://blogs.iis.net/anilr/archive/2009/11/09/using-arr-config-extensibility-to-gracefully-stop-server.aspx使用 JScript 的教程。但我无法将其转换为 powershell。

编辑2:
使用 WebAdministration 模块中的 Set-WebConfigurationProperty,我可以更改服务器的设置。我找到了 SetState,%windir%\system32\inetsrv\config\schema\arr_schema.xml但我不知道如何调用该方法。

答案1

假设您的服务器场名为 myWebFarm,而您尝试设置为排空的服务器是 myNode1,则以下 PowerShell 代码将起作用

Import-Module WebAdministration

$arr = Get-WebConfiguration -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter "webFarms/webFarm[@name='myWebFarm']/server[@address='myNode1']/applicationRequestRouting" 
$setState = $arr.Methods['SetState'].CreateInstance()
$setState.Input.Attributes['newState'].Value = 1
$setState.Execute()

如果你想检查 currentRequests 计数器的值以查看它何时完成消耗(变为 0),你可以使用

(Get-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter "webFarms/webFarm[@name='myWebFarm']/server[@address='myNode1']/applicationRequestRouting/counters" -Name "currentRequests").Value

一般来说,IIS 管理器 GUI 中配置编辑器的生成脚本功能有助于生成 PowerShell 脚本,至少可以帮助您完成部分操作。

相关内容