![在 ARR 中使用 Powershell 优雅地使服务器不可用](https://linux22.com/image/598501/%E5%9C%A8%20ARR%20%E4%B8%AD%E4%BD%BF%E7%94%A8%20Powershell%20%E4%BC%98%E9%9B%85%E5%9C%B0%E4%BD%BF%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8D%E5%8F%AF%E7%94%A8.png)
我们正在使用 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 脚本,至少可以帮助您完成部分操作。