Windows10 (Home/Pro) でIIS＋WSH-CGIを構築する

# はじめに

Windows10 (Home/Pro) にIISが居るらしいので有効化してついでにWSHをCGIとして動作するようにしてみた。

# 環境

Windows 10 Home 21H1(IIS6)

# 手順

## IISとCGIの有効化

スタートメニュー→設定→アプリと機能を開き、オプション機能をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298004/7c4c9a42-983b-3a77-d17c-3e6a0867f823.png)

アプリと機能画面の下部または右側にある関連設定・Windowsのその他の機能を開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298004/e82313a3-a7d1-831e-2ede-2fb98559150d.png)

インターネットインフォメーションサービスにチェック
Web管理ツール→IIS管理コンソールにチェック
World Wide Web サービスにチェック
アプリケーション開発機能→CGIにチェック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298004/cf8ecbf4-1b63-dd43-2167-f6fdd4d863ab.png)

上画像のような状態になったことを確認し、OKを押す。
IIS機能の有効化処理が始まるため、しばらく待つ。

## CGIの設定(WSHとの関連付け)

スタートメニュー→Windows管理ツール→IISマネージャーを起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298004/725fc0d7-961b-9366-3a63-a2cbdc765a8e.png)

左側の接続ツリーでDefault Web Siteを右クリックし、仮想ディレクトリの追加を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298004/5bafc73e-2890-83bb-83e3-d7cb32af3f4a.png)

エイリアス名と物理パスを入力（CGIスクリプトの置き場となる）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298004/93ab8498-636d-bb8c-cb6e-6045f0c34644.png)

パススルー認証・接続ボタンを押し、特定のユーザーを選択し、設定ボタンを押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298004/9f79ab7e-366e-774d-ab8f-7a7d6e7687d5.png)

物理パスにアクセスできる権限を持ったWindowsユーザーを入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298004/b1e068f8-4828-85f7-a98c-f5983ca298b3.png)

Default Web Siteの配下に仮想ディレクトリのエントリが追加されたことを確認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298004/4f072a26-b241-7c00-f58d-9410ee0dc217.png)

追加した仮想ディレクトリを選択し、ハンドラーマッピングを開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298004/447d0125-85ef-66c3-87f7-f79f406607aa.png)

ハンドラーマッピング一覧で右クリック（画面右の操作からでも可）し、スクリプト マップの追加を開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298004/7b442e36-daed-59f4-f3a1-739d3faea2b4.png)

VBSの場合、要求パスを`*.vbs`にする（JScriptなら`*.js`）
実行可能ファイルは`C:\%windir%\System32\cscript.exe %s %s //nologo`と入力
(`//nologo`を入れないとHTTPヘッダにスクリプトエンジンの起動メッセージが混入してエラーが出る)
名前は任意の値で可
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298004/dbf076db-d857-088c-12b0-b48a44791044.png)

Default Web Siteを右クリック→Webサイトの管理→再起動をクリックし、サイトの再起動を実施する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298004/dc8f25b5-a49a-414a-a2e9-83f5371b7857.png)

動作確認用のスクリプトを仮想ディレクトリに設定した物理フォルダに置く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298004/616206a2-756a-9904-84a5-7be0d58a18ef.png)
＜スクリプトの中身＞

```vb:test.vbs
WScript.Echo "Content-Type: text/html"
WScript.Echo
WScript.Echo "If you see this, it worked."
WScript.Echo "<br>"

If WScript.Arguments.Count > 0 Then
    For i = 0 To WScript.Arguments.Count - 1
        WScript.Echo i + 1 & " : " & WScript.Arguments(i)
        WScript.Echo "<br>"
    Next
End If
```

##動作確認

ブラウザで`http://<IISを設定したPCのIP>/cgi-bin/<スクリプトファイル>`を開き、動作を確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298004/00cdf089-4bc6-27bc-cc14-9e169d0d67e4.png)