Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
# Install CGI and ISAPI extension feature
PS C:\Users\Administrator> Install-WindowsFeature Web-CGI,Web-ISAPI-Ext
Success Restart Needed Exit Code Feature Result
------- -------------- --------- --------------
True No Success {CGI}
# restart IIS
PS C:\Users\Administrator> Restart-Service W3SVC
PS C:\Users\Administrator> Get-Website
Name ID State Physical Path Bindings
---- -- ----- ------------- --------
Default Web Site 1 Started %SystemDrive%\inetpub\wwwroot http *:80:
RX-7.srv.world 2 Started C:\inetpub\newsite http *:80:rx-7.srv.world
https *:443:rx-7.srv.world sslFlags=0
PS C:\Users\Administrator> Get-ChildItem C:\inetpub\newsite
Directory: C:\inetpub\newsite
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 1/24/2022 11:03 PM aspnet_client
d----- 1/24/2022 11:09 PM auth_basic
d----- 1/24/2022 11:22 PM auth_win
d----- 1/24/2022 11:25 PM content01
d----- 1/24/2022 11:26 PM content02
-a---- 1/24/2022 11:06 PM 428 index.aspx
-a---- 1/24/2022 9:55 PM 28 index.html
# add Python to ISAPI/CGI extension
PS C:\Users\Administrator> Add-WebConfiguration -Filter '/system.webServer/security/isapiCgiRestriction' -Value @{description="Python";path="C:\Program Files\Python310\python.exe %s %s";allowed="true"}
# for example, set [*.py] scripts as executable under [content01] folder on [RX-7.srv.world] site
PS C:\Users\Administrator> Set-WebConfigurationProperty -Filter '/system.webServer/handlers' -Location "RX-7.srv.world/content01" -Name accessPolicy -Value "Read, Script"
PS C:\Users\Administrator> Add-WebConfiguration -Filter '/system.webServer/handlers' -Location "RX-7.srv.world/content01" -Value @{name="Python Interpreter";path="*.py";verb="*";modules="CgiModule";scriptProcessor="C:\Program Files\Python310\python.exe %s %s";resourceType="File"}
# restart the Web site
PS C:\Users\Administrator> Restart-WebItem -PSPath 'IIS:\Sites\RX-7.srv.world'
# create a test script
PS C:\Users\Administrator> $str_document = @'
print("Content-type: text/html\n\n")
print("Python Script Test Page on IIS")
'@
PS C:\Users\Administrator> Write-Output $str_document | Out-File C:\inetpub\newsite\content01\test.py -Encoding Default
# verify accesses
PS C:\Users\Administrator> curl.exe https://rx-7.srv.world/content01/test.py
Python Script Test Page on IIS
|