Als je Windows-servers beheert, heb je waarschijnlijk gewerkt met Internet Information Services (IIS). Websites zijn een van de belangrijkste functies van IIS en met PowerShell kun je IIS eenvoudig beheren en automatiseren met PowerShell IIS-scripts!
In dit artikel maak je kennis met een nieuwe manier om IIS te beheren met PowerShell. Met de technieken in dit artikel kun je eenvoudig PowerShell IIS-scripts maken en beheren om IIS-websites te creëren en te beheren.
Om IIS te beheren met PowerShell heb je een van de twee PowerShell-modules nodig – WebAdminstration of IISAdminstration. Dit artikel behandelt de modernere IISAdministration-module. In de bijbehorende video bij dit artikel wordt de oudere WebAdministration-module gedemonstreerd als je een alternatieve manier wilt zien.
Weten hoe je zelfs een eenvoudige website voor je bedrijf of voor de wereld kunt beheren, zal je onderscheiden van de rest van je collega’s. De volgende secties in dit artikel zullen je helpen leren hoe je een website in IIS kunt maken en beheren. Je leert ook hoe je webtoepassingspools beheert met een paar PowerShell-cmdlets.
IISAdministration vs WebAdministration-modules
Je hebt twee opties voor het beheren van IIS. Je kunt WebAdministration of IISAdministration gebruiken. Maar welke moet je gebruiken?
Als je IIS 10.0 of hoger gebruikt, biedt de nieuwere IISAdministration-module veel verbeteringen ten opzichte van de oudere WebAdministration-module.
Hier zijn enkele hoogtepunten:
- De cmdlets van IISAdministration bieden betere ondersteuning voor de pipeline en schalen beter.
- Vergeleken met de oudere, verouderde IIS WebAdministration cmdlets bevat IISAdministration efficiëntere code.
- IISAdministration cmdlets zijn eenvoudiger en bieden directe toegang tot de serverbeheerder.
Deze tekst gaat zich richten op deze nieuwere IISAdministration-module.
Vereisten
Deze tekst wordt hands-on. Als je wilt volgen, zorg er dan voor dat je aan de volgende vereisten voldoet.
- Minimaal Windows PowerShell 5.1 of PowerShell 6+
- IISAdministration PowerShell-module van de PowerShell Gallery
- IIS 10.0 Windows-functie ingeschakeld

Het is aanbevolen dat je bekend bent met de basis van HTML. Er komt een stap waarin het gebruik van HTML een rol speelt in de aankomende voorbeelden. Maar maak je geen zorgen, je kunt de code kopiëren en plakken!
Alle voorbeelden in deze blogpost zijn gemaakt met IIS 10.0 op Windows 10 en PowerShell 7 Preview 6. De IISAdministration-cmdlets zijn hetzelfde voor Windows Server 2016 & 2019 en werken met Windows PowerShell 5.1.
Dat zijn de gebruikte tools, nu voor de benodigde middelen om te volgen.
De IISAdministration-module installeren
Zodra je aan de vereisten hebt voldaan, is het tijd voor wat instelwerk. Gelukkig is er niet veel instelling nodig, aangezien de PowerShell-module die je nodig hebt (IISAdministration) vrij beschikbaar is in de PowerShell Gallery.
Ga verder en open een verhoogde PowerShell-console op je webserver en installeer de module met onderstaand commando.
Als je geen toegang hebt tot internet, kun je de module naar een andere host downloaden en naar je modulemap kopiëren. Bekijk de documentatie voor het
Save-Module
-commando.
Ontdekken van beschikbare Cmdlets
Net als bij elke PowerShell-module waar je misschien niet bekend mee bent, is een van de eerste cmdlets die je moet gebruiken om de inventaris van cmdlets van een module te ontdekken, Get-Command
. Met het commando Get-Command -Module 'IISAdministration'
zoals hieronder getoond, kun je zien wat er mogelijk is met deze module.
Zelfs als je enkele gebruikelijke handelingen leert voor websites, geven deze commando’s je een idee van alles wat je kunt doen.

Nu heb je een lijst met beschikbare cmdlets. Het is tijd om een website samen te stellen.
Het creëren van je eerste website
Om te kunnen werken met een website, laten we eerst een website maken. Om dat te doen, is de eerste stap het maken van een map om de webinhoud op te slaan. Daarnaast heb je een HTML-bestand nodig in die map om door IIS te worden weergegeven. Deze map zal dienen als de webmap die later in voorbeelden zal worden gebruikt.
Het maken van de webmap en pagina
Eerst, maak een map aan. Dit kun je doen met behulp van de New-Item
cmdlet. De onderstaande code zal een map maken op C:\MyWebsite.
Je kunt elke gewenste pad kiezen met de bovenstaande code. Om het eenvoudig te houden, worden generieke paden gebruikt.
Zodra je de map hebt aangemaakt, is het tijd om een HTML-bestand te maken dat de landingspagina zal zijn voor je nieuwe website.
Maak nu een bestand genaamd index.html in de C:\Mywebsite map zoals hieronder weergegeven.
Zodra het bestand is aangemaakt, open je het in je favoriete editor en kopieer en plak je de onderstaande code in dat document. Deze HTML is een eenvoudige pagina die zal worden gebruikt om te controleren of IIS correct is geconfigureerd wanneer je klaar bent.
Het maken van een IIS-website
Het is nu tijd om de zojuist gemaakte webpagina beschikbaar te maken voor de wereld. Om dat te doen, moet je een virtuele directory maken. De virtuele directory bevat alle assets en bronnen die worden gebruikt voor de geserveerde pagina.
Standaard maakt IIS een virtuele directory aan onder C:\inetpub\wwwroot. De directory bevat alle standaard webpagina-assets en bronnen voor IIS. Je zou de standaard C:\inetpub\wwwroot-directory ook kunnen gebruiken om je bestanden op te slaan, maar voor deze voorbeelden zal het niet worden gebruikt om de paden zo kort mogelijk te houden. Daarom gebruik je C:\MyWebsite in plaats daarvan.
Om een nieuwe virtuele directory (site) aan te maken, gebruik je de New-IISSite
cmdlet. Deze cmdlet stelt je in staat om de IIS-website te maken.
Voor dit artikel maak je een website genaamd Mywebsite die verwijst naar de C:\MyWebsite-directory en luistert op poort 8088. In de onderstaande code-snipper kun je zien hoe je dit doet met behulp van de New-IISSite
cmdlet.
Het enige dat verwarrend kan zijn, is de BindingInformation
-parameter. Deze parameter staat alleen bindingsyntax toe. In deze snippet zal New-IISSite
een website creëren die gebonden is aan een IP-adres (*
is hetzelfde als 127.0.0.1), de TCP-poort om naar te luisteren, gevolgd door eventuele HTTP-headers.
Bindingsyntax kan worden uitgelegd als protocol, gevolgd door bron:Poort:bestemming. In dit voorbeeld heb je IIS geconfigureerd om HTTP-verzoeken te laten luisteren vanaf ELK () IP-adres op poort 8088 en de bestemming is de localhost.*
Nadat de website is gemaakt, kunt u Get-IISSite
uitvoeren om te inspecteren hoe het eruitziet, zoals hieronder wordt weergegeven.

Standaard wordt de configuratie van de website gestart en begint uw webhost met het verwerken van die HTTP-verzoeken. Open uw favoriete browser en ga naar de lokale machine die wijst naar poort 8088. U zou nu de webpagina moeten zien die u eerder hebt gemaakt.

Gefeliciteerd! U hebt zojuist uw eerste website opgezet op IIS met PowerShell!
Nu u een website hebt die draait, is het tijd om te leren hoe u uw website en de IIS-server die deze host, kunt beheren.
Het beheren van de IIS-website
Zodra een website actief is, moet u ongetwijfeld veelvoorkomende acties uitvoeren, zoals stoppen en starten van de site. Als bijvoorbeeld updates nodig zijn, moet u de site soms opnieuw starten.
Om de site in PowerShell te beheren, heeft u twee cmdlets waarmee u kunt werken – Start-IISSite
en Stop-IISSite
. Deze twee cmdlets werken vergelijkbaar met hoe de cmdlets Stop-Service
en Start-Service
werken.
Een website stoppen is vergelijkbaar met het stoppen van een Windows-service. U voorkomt of staat toegang toe tot de site die toegankelijk is via een protocol dat wordt bediend op een unieke poort door IIS. U stopt echter niet de IIS-host. Sites kunnen op een individuele basis worden gestopt en gestart.
Het stoppen van een enkele website
Om een IIS-website te stoppen, gebruikt u de cmdlet Stop-IISSite
. Standaard zou de website die u eerder hebt aangemaakt, in de status Gestart
moeten zijn. Als u de site stopt en dus de toegang tot MyWebsite voorkomt, voert u Stop-IISSite
uit met de naam zoals hieronder weergegeven. Deze code stopt de MyWebsite-site van wordt bediend door IIS. Nadat u de site hebt gestopt, kunt u er niet langer toegang toe krijgen.
Een voorbeeld van het inspecteren van de status van de website als Gestart
, het stoppen ervan en opnieuw inspecteren van de status wordt hieronder getoond. In dit voorbeeld doet u het volgende:
- De status van de MyWebsite-site ophalen met behulp van
Get-IISSite
. - De cmdlet
Stop-IISSite
uitvoeren tegen de MyWebsite-site. Deze cmdlet sluit de toegang tot de website af. Omdat deze actie operationele wijzigingen aanbrengt, wordt u om bevestiging gevraagd. - Opnieuw
Get-IISSite
uitvoeren om te controleren of de MyWebsite-site is gestopt door de statusGestopt
op te merken.

Het stoppen van alle sites
Hierboven hebt u een enkele site gestopt, maar u kunt ook alle sites even eenvoudig stoppen. Door de uitvoer van Get-IISSite
naar Stop-IISSite
te leiden, zal PowerShell alle sites doorlopen en stoppen. In het onderstaande voorbeeld wordt de optionele Verbose
-schakeloptie gebruikt om meer informatie weer te geven.

U kunt ook alle sites in IIS stoppen door de W3SVC of World Wide Web Publishing Service te stoppen. Het stoppen van de Windows-service sluit IIS af en voorkomt dat alle sites worden geserveerd. Als u dit doet, kunnen de sites echter nog steeds worden weergegeven als zijnde gestart.
Het starten van een enkele site
Stel dat u enkele wijzigingen hebt aangebracht aan de MyWebsite-site en deze opnieuw moet starten. Het is tijd om het Start-IISSite
-commando te gebruiken. Doe dat eenvoudig door de naam op te geven zoals u dat deed met het Stop-IISSite
-cmdlet.
Wanneer uitgevoerd, kunt u de status opnieuw inspecteren met behulp van Get-IISSite
. Als u dat doet, zou u vergelijkbare uitvoer moeten zien als op de onderstaande screenshot.

Get-IISSite
and starting the site with Start-IISSite
En nu zou uw site weer beschikbaar moeten zijn op http://localhost:8088 als u uw browser vernieuwt.
Het starten van alle sites
Vergelijkbaar met hoe u hebt voorkomen dat alle sites worden gepubliceerd, kunt u de pijplijn gebruiken om alle websites op uw IIS-host te starten.
Nogmaals, u haalt alle geserveerde IIS-sites op en gebruikt de pijplijn om ze elk te starten. Uw uitvoer zou er vergelijkbaar uit moeten zien als de onderstaande screenshot.

Beheer van webbindings
Het is nu tijd om enkele veelvoorkomende beheertaken uit te voeren op de MyWebsite-site. Een van de meest voorkomende taken is het wijzigen van de webbindings.
Wanneer je de site MyWebsite hebt gemaakt, heb je de bindende syntax van *:8088:
gebruikt. Deze syntax stond voor luisteren op het IP-adres 127.0.0.1, op poort 80 zonder HTTP-headers. Laten we zeggen dat je nu hebt besloten dat je in plaats daarvan wilt dat de site luistert op poort 9000. Om dit te doen, moet je de sitebindings aanpassen.
Bestaande Bindings Controleren
Voordat je de bindings van de site kunt wijzigen, moet je eerst de huidige configuratie controleren. Een manier om dat te doen is door de eigenschap Binding
te inspecteren die wordt geretourneerd door Get-IISSite
. Let in het volgende codefragment op hoe je dat doet. In het fragment vraagt Get-IISSite
om de MyWebSite-site en retourneert alleen de eigenschap Bindings
.
Wanneer je alleen de eigenschap Bindings
inspecteert, retourneert PowerShell een object met een paar verschillende stukjes informatie zoals hieronder getoond.

Als je alleen de bindende informatie wilt zien, kun je specifiek verwijzen naar de eigenschap bindingInformation
zoals hieronder getoond.

Bindings Verwijderen
Als je wilt wijzigen op welke poort een site luistert, moet je eerst de bestaande binding verwijderen die eraan is gekoppeld. Om de binding te verwijderen, moet je eerst de site stoppen.
Zodra de site is gestopt, kun je nu de bestaande binding verwijderen die de MyWebsite-site aan poort 8088 koppelt. Om dat te doen, kun je de Remove-IISSiteBinding
-cmdlet gebruiken.
Om de binding voor MyWebsite zoals eerder gedefinieerd te verwijderen, kunt u hieronder een voorbeeld zien van het gebruik van Remove-IISSiteBinding
om dat te doen. Hieronder geeft u de naam van de site op en specificeert u de bindingsyntax die eerder is ontdekt.
Wanneer u de code uitvoert, wordt u gevraagd uw beslissing te bevestigen, aangezien u iets destructiefs doet zoals hieronder wordt weergegeven.

Er is geen limiet aan het aantal bindings dat u kunt hebben. U kunt net zo gemakkelijk de oorspronkelijke binding hebben behouden en TCP-poort 9000 als nieuwe binding hebben toegevoegd.
Nu kunt u opnieuw Get-IISSite -Name 'MyWebsite'
uitvoeren. U zult nu zien dat de bindinginformatie is verwijderd zoals blijkt uit de lege waarde onder Bindings
.

Zelfs als de site is gepubliceerd, heeft IIS geen manier om te weten hoe verkeer naar uw site moet worden gerouteerd.
Het is belangrijk om minstens één binding aan uw site toe te wijzen. Om u het belang hiervan te laten zien, probeer opnieuw naar http://localhost:8088/index.html te navigeren. Als u de webbrowser Mozilla Firefox gebruikte, ziet u mogelijk dit bericht hieronder.

Nieuwe bindings maken
In het vorige gedeelte hebt u de enige sitebinding verwijderd die MyWebsite had. Hoewel dit de site heeft onderbroken, is het slechts een tijdelijk probleem. Het is tijd om dit probleem te corrigeren door een nieuwe binding te maken.
Om een nieuwe binding te maken, gebruikt u de cmdlet New-IISSiteBinding
. Aangezien u nu poort 9000 aan de MyWebsite site moet binden, specificeert u de juiste bindingsyntax zoals hieronder weergegeven.
Once you’ve created the new binding, start de site opnieuw met Start-IISSite
. Onthoud dat om deze nieuwe binding te maken, IIS vereiste dat de site naar beneden werd gehaald.
Wanneer de site opnieuw start, zou je er nu toegang toe moeten hebben op poort 9000. Om dit te verifiëren, open je favoriete webbrowser en ga naar http://localhost:9000. Je zou nu moeten zien dat de webpagina weer werkt op poort 9000.

Verwijderen van een Website
Als je net een tutorial hebt doorlopen en niet van plan bent de MyWebsite site te behouden, is het tijd om op te ruimen. Gebruik de Remove-IISSite
cmdlet om een site te verwijderen.
Het verwijderen van een IIS-site kan riskant zijn, vooral als je een site verwijdert die andere productiewebsites host. Om te controleren of je de juiste site verwijdert, wordt aanbevolen om de gebruikelijke WhatIf
PowerShell-parameter te gebruiken. Deze parameter stelt je in staat om te inspecteren wat er zou zijn gebeurd als het commando daadwerkelijk was uitgevoerd.
Je kunt een voorbeeld zien van het verwijderen van de MyWebsite site met de WhatIf
parameter hieronder.

-WhatIf
!Als alles er goed uitziet, laat dan de veiligheidsbeugel los en voer de code opnieuw uit, deze keer zonder de -WhatIf
parameter.
Bij het gebruik van de
Remove-IISSite
cmdlet wordt de site niet verwijderd. Het wordt uit de IIS-configuratie verwijderd. Bestanden voor de website blijven intact.
Samenvatting
In dit artikel heb je geleerd hoe je een website kunt maken met behulp van de IISAdministration-module. Je hebt gezien hoe je administratieve handelingen kunt uitvoeren die nodig zijn voor het onderhouden van een website. Je weet nu genoeg van de basisprincipes om met elke moderne IIS-host te werken met behulp van PowerShell!