【问题标题】:How do I set the binding port number for a set of IIS websites with an increment value using PowerShell?如何使用 PowerShell 为一组具有增量值的 IIS 网站设置绑定端口号?
【发布时间】:2017-06-01 23:35:26
【问题描述】:

我有一个包含许多网站的 IIS 后端服务器。我刚刚使用 powershell 创建了这些站点。我需要将每个网站的绑定端口设置为代理的唯一编号(从 9200 开始)。我正在尝试找到一种方法来编写脚本,但是我很难找到解决方案。目前,我在要为其设置绑定端口的文本文件中有一个网站列表。现在这就是我所拥有的:

Import-Module WebAdministration

$endpoints = Get-Content C:\scripts\endpoints.txt

foreach ($number in 9200..9310)
{
    foreach ($site in $endpoints)
        {
    Set-WebBinding -Name '$site' -BindingInformation "*:80:" -PropertyName Port -Value $number
    }
  }

我有第一个 foreach 循环的原因是从 9200-9310 获取端口号,因为我总共有 110 个网站。我是不是走错路了?

【问题讨论】:

  • 您的脚本到底有什么问题?
  • 基本上我希望列表中的每个站点都分配一个唯一的端口号(9200-9310)。该脚本不是为每个站点分配端口号,而是尝试将每个站点绑定到每个端口号 (9200-9310)。
  • 在您的号码循环中,您正在遍历每个站点。实际上,对于端口 9200,您正在分配每个站点。然后是 9201:每个站点。 9202:每个站点....等

标签: loops powershell iis


【解决方案1】:

看来问题在于您的两个 foreach 循环。您的第二个 foreach 循环位于包含端口号的循环内。因此,您的第一个循环从 $number = 9200 开始,然后将 EACH $site 设置为当时保存在您的 $number 变量中的端口,然后退出该循环并增加端口号并重新开始。

这是我想出的一些东西,我相信它会解决你的问题。

Import-Module WebAdministration
$endpoints = Get-Content C:\scripts\endpoints.txt

$ports = New-Object System.Collections.ArrayList
[int] $port = 9200
[int] $counter = 0

while($port -le 9310) {
  $ports.Add($port)
  $port++
}

foreach ($site in $endpoints)
{
   Set-WebBinding -Name '$site' -BindingInformation "*:80:" -PropertyName Port -Value $ports[$counter]
   $counter++
}

【讨论】:

  • 这正是我要找的 KangarooRIOT。感谢您的帮助!
  • @TaylorDuncan 能否请您标记已回答的问题?很高兴我能帮忙:)
  • 抱歉回复晚了,我才刚刚回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 2010-11-20
  • 2012-09-19
  • 1970-01-01
  • 2012-07-21
相关资源
最近更新 更多