gpt4 book ai didi

powershell - IIS配置可以同时修改吗

转载 作者:行者123 更新时间:2023-12-02 23:27:22 24 4
gpt4 key购买 nike

我们在每台服务器的 IIS 中都有多个网站,并且我们有 PowerShell 脚本可以创建/更新单个网站,以及配置绑定(bind)、SSL、应用程序池等。

鉴于服务器场的大小和网站的数量,非常希望能够同时升级多个网站。

但是,这会引发一个问题,即站点 A 的 applicationHost.config 更新可能会被站点 B 的并发更新覆盖。

这可能吗?

最佳答案

最好测试一下:

让我们从一个创建一些站点的简单脚本开始,在本例中为 20 个。

Param
(
[Parameter(Mandatory=$true)]
[int]
$offset
)

Import-Module WebAdministration

ForEach ($number in 1..20 ) {

$id = $offset + $number
New-WebSite -Name $("Test_" + $id) -Port $id -Id $id -PhysicalPath "$env:systemdrive\inetpub\wwwroot"
}

我把它保存到 C:\temp\New-TestSite.ps1
现在同时运行该脚本三次,我创建了另一个脚本: C:\temp\Run-Test.ps1内容如下:
start-job -ScriptBlock {& C:\temp\New-TestSite.ps1 -offset 10000}
start-job -ScriptBlock {& C:\temp\New-TestSite.ps1 -offset 20000}
start-job -ScriptBlock {& C:\temp\New-TestSite.ps1 -offset 30000}

运行后 Run-Test.ps1 ,让我们检查一下我们创建了多少个网站:
ls iis:\sites | group {$_.Name.substring(0,6)} | Select Count,Name | Format-Table -AutoSize

我有:
Count Name
----- ----
19 Test_1
18 Test_2
15 Test_3

所以我们创建了 60 个中的 52 个

每个脚本创建 50 个时,我得到:
Count Name
----- ----
31 Test_1
31 Test_2
30 Test_3

那是 150 人中有 92 人

在某些测试用例中更糟糕的是,其中一个 PowerShell 进程崩溃了:

enter image description here

至少 Get-Job显示:
Id     Name            PSJobTypeName   State    
36 Job36 BackgroundJob Failed
38 Job38 BackgroundJob Completed
40 Job40 BackgroundJob Completed

所以总而言之,我们可以说同时修改applicationHost.config是不保存的。

当然,这是一个极端的测试用例,同时进行手动更改可能会起作用,但我们应该小心。

测试在 Server 2012 R2 (IIS 8.5) 上运行

关于powershell - IIS配置可以同时修改吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31237258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com