Ich versuche, die Erstellung einer Serverfarm in PowerShell zu automatisieren. Durch manuelle Erstellung habe ich die folgende XML bekam:Erstellen einer Webfarm in PowerShell
<webFarms>
<webFarm name="alwaysup" enabled="true">
<server address="alwaysup-blue" enabled="true">
<applicationRequestRouting httpPort="8001" />
</server>
<server address="alwaysup-green" enabled="true">
<applicationRequestRouting httpPort="8002" />
</server>
<applicationRequestRouting>
<healthCheck url="http://alwaysup/up.html" interval="00:00:05" responseMatch="up" />
</applicationRequestRouting>
</webFarm>
<applicationRequestRouting>
<hostAffinityProviderList>
<add name="Microsoft.Web.Arr.HostNameRoundRobin" />
</hostAffinityProviderList>
</applicationRequestRouting>
</webFarms>
Der Versuch, dies über PS zu tun aber lästig erweist: soweit ich keine dedizierte es sagen kann API ist, dies zu tun durch (WebFarmSnapin ist für eine ältere gemeint Ausführung).
Ich habe meine Aufmerksamkeit auf IIS Administration Cmdlets verlagert, aber es hat nur halb funktioniert.
Der Code, den ich habe:
#####
# Overwriting the server farm
#####
Write-Host "Overwriting the server farm $($webFarmName)"
$webFarm = @{};
$webFarm["name"] = 'siteFarm'
Set-WebConfiguration "/webFarms" -Value $webFarm
#####
# Adding the servers
#####
Write-Host "Adding the servers"
$blueServer = @{}
$blueServer["address"] = 'site-blue'
$blueServer["applicationRequestRouting"] = @{}
$greenServer = @{}
$greenServer["address"] = 'site-green'
$greenServer["applicationRequestRouting"] = @{}
$servers = @($blueServer, $greenServer)
Add-WebConfiguration -Filter "/webFarms/webFarm[@name='siteFarm']" -Value $servers
#####
# Adding routing
#####
Write-Host "Adding the routing configurations"
$blueServerRouting = @{}
$blueServerRouting["httpPort"] = "8001"
Add-WebConfiguration -Filter "/webFarms/webFarm[@name='siteFarm']/server[@address='site-blue']" -Value $blueServerRouting
Dies erzeugt
<webFarms>
<webFarm name="siteFarm">
<server address="site-blue" />
<server address="site-green" />
</webFarm>
<applicationRequestRouting>
<hostAffinityProviderList>
<add name="Microsoft.Web.Arr.HostNameRoundRobin" />
</hostAffinityProviderList>
</applicationRequestRouting>
</webFarms>
Wie Sie es fehlt den Hafen im Zusammenhang mit dem Routing sehen. Und ich habe noch nicht einmal damit begonnen, den Gesundheitscheck an dieser Stelle hinzuzufügen.
Was mache ich falsch? Gibt es ein Cmdlet, das ich nicht gefunden habe, was das einfacher macht?
Related aber ohne viel nützliche Antwort (die Registerkarte PowerShell mit generiertem Code bleibt leer).
Sie könnten versuchen und sehen, ob der IIS-Anbieter tun kann, was Sie wollen https://technet.microsoft.com/en-us/library/ee909471(v=ws.10).aspx Es ist wohl ein bisschen mehr nitty -gritty als mit IIS-Cmdlets, aber manchmal ist es das, was es braucht. – mtnielsen
Haben Sie sich dieses Cmdlet angesehen, um den Port zu konfigurieren? 'Set-WebBinding -Name 'Standard-Website' -BindingInformation '*: 80:" -PropertyName "Port" -Value "1234" 'Ich kenne Webfarms nicht genug, um zu wissen, ob Ihnen das hilft oder nicht. – FoxDeploy
Wenn Sie dies noch nicht getan haben, würde ich vorschlagen, in die [xWebAdministration DSC-Ressource] (https://github.com/PowerShell/xWebAdministration) zu schauen, um die Erstellung/Konfiguration/den gewünschten Status der Webfarm zu automatisieren. Das WebAdministration-Modul lässt viel zu wünschen übrig (sprechen von Erfahrung nach der Automatisierung einiger IIS-Setup früher in diesem Jahr) – TheIncorrigible1