PowerShell IIS Beheersing: Websites Maken en Beheren

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.

The Windows 10 “Turn Windows features on or off” dialogue

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.

PS> Install-Module -Name 'IISAdministration'

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.

Get-Command -Module ‘IISAdministration’ results

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.

PS> New-Item -ItemType Directory -Name 'MyWebsite' -Path 'C:\'

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.

PS> New-Item -ItemType File -Name 'index.html' -Path 'C:\MyWebsite\'

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.

<!DOCTYPE html>
<html>
    <head>
         <title>IIS Administration With PowerShell Demo</title>
    </head>
    <body>
        <h1>IIS Administration with PowerShell Demo</h1>
        <p>Thank you for reading this post on how to administer IIS with PowerShell!</p>

        <p>This page was created using the newer IISAdministration PowerShell module.</p>
        <h2>First Steps</h2>
        <p>Keep calm and learn PowerShell.</p>
    </body>
</html>

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.*

PS> New-IISSite -Name 'MyWebsite' -PhysicalPath 'C:\MyWebsite\' -BindingInformation "*:8088:"

Nadat de website is gemaakt, kunt u Get-IISSite uitvoeren om te inspecteren hoe het eruitziet, zoals hieronder wordt weergegeven.

Creating a New Website in IIS

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.

MyWebSite IIS site in a web browser

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.

PS> Stop-IISSite -Name "MyWebsite"

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:

  1. De status van de MyWebsite-site ophalen met behulp van Get-IISSite.
  2. 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.
  3. Opnieuw Get-IISSite uitvoeren om te controleren of de MyWebsite-site is gestopt door de status Gestopt op te merken.
Getting, stopping, and confirming MyWebsite state

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.

Get-IISSite | Stop-IISSite -Verbose
Stopping all IIS sites with PowerShell

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.

PS> Start-IISSite -Name 'MyWebsite'

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.

Checking the status of MyWebsite using 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.

PS> Get-IISSite | Start-IISSite

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.

Using the pipeline to start all sites on host

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.

PS> (Get-IISSite -Name 'MyWebsite').Bindings

Wanneer je alleen de eigenschap Bindings inspecteert, retourneert PowerShell een object met een paar verschillende stukjes informatie zoals hieronder getoond.

Example 1: Finding binding information

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

Example 2: Finding binding information

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.

PS> Stop-IISSite -Name 'MyWebsite'

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.

PS> Remove-IISSiteBinding -Name 'MyWebsite' -BindingInformation "*:8088:"

Wanneer u de code uitvoert, wordt u gevraagd uw beslissing te bevestigen, aangezien u iets destructiefs doet zoals hieronder wordt weergegeven.

Removing site binding using Verbose parameter

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.

Confirming the old bindings were removed

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.

Can’t establish a connection

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.

PS> New-IISSiteBinding -Name 'MyWebsite' -BindingInformation "*:9000:"

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.

Same page, different TCP port

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.

Remove-IISSite -Name 'MyWebSite' -WhatIf
Being careful with destructive cmdlets by using -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!

Verder Lezen

Source:
https://adamtheautomator.com/powershell-iis/