Всегда лучше, чтобы проверить это:
Давайте начнем с простого скрипта, создать несколько сайтов, 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
Таким образом, мы создали 52 из 60
При создании 50 за сценарий, я получил:
Count Name
----- ----
31 Test_1
31 Test_2
30 Test_3
Это 92 из 150
Хуже того, в некоторых тестовых случаях один из процессов PowerShell разбился:
По крайней мере Get-Job
показывает:
Id Name PSJobTypeName State
36 Job36 BackgroundJob Failed
38 Job38 BackgroundJob Completed
40 Job40 BackgroundJob Completed
Таким образом, в заключение можно сказать, что это не сохранить изменения Applicationhost.config одновременно.
Конечно, это экстремальный тестовый пример, и ручные изменения одновременно могут работать, но мы должны быть осторожны.
Испытания проводились на сервере 2012 R2 (IIS 8.5)
Yay Science! Я думаю, что это довольно убедительно. Благодарю. – sheikhjabootie