今回からはWebページをスクリーンショット画像で保存するPowerShellスクリプト「getss.ps1」を作成していく。基本となる機能はMicrosoft Edgeのヘッドレスモードだ。Microsoft Edgeのヘッドレスモードにはスクリーンショットを取得する機能があるので、これを利用してスクリプトを仕上げていく。
Microsoft Edgeのヘッドレスモード
Microsoft Edgeはヘッドレスモードで実行することで、ウインドウを表示することなくコンテンツを取得することができる。ヘッドレスモードを有効にするオプションは「--headless」だ。
さらに、このモードにはスクリーンショットを取得する機能も用意されている。「--screenshot」オプションで有効化できる。「--screenshot」オプションはさらにフルパスを引数に取るようになっており、ここでPNGファイルへのパスを指定するようになっている。指定されたパスにPNG画像データをファイルとして保存する仕組みだ。
前回はこの動作を確認するための次のコマンドを実行した。
& 'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe' --headless --screenshot=C:\Users\daichi\ss.png https://docs.microsoft.com/ja-jp/powershell/
まず、Microsoft Edgeの実行ファイルのパスが「C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe」だ。このパスは空白を含んでいるので、PowerShellで実行する場合には「&」を指定する必要があるので、実行は「& 'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe'」となる。
これにヘッドレスモードを使いたいので「--headless」を、スクリーンショットを取りたいので「--screenshot=C:\Users\daichi\ss.png」を指定する。スクリーンショットの対象として「https://docs.microsoft.com/ja-jp/powershell/」を指定して実行完了だ。
なお、試してみる場合にはC:\Users\daichi\ss.pngはユーザーごとに異なるので「${env:HOME}\ss.png」のようにしていただきたい。