Visual Studio Codeの設定(PowerShellデバッグ)

1.外部ファイルの変更が反映されない

 PowerShellでWindowsフォームを作ることが多くなってきたので下記のような感じで、クラスごとにファイルを分けたり、共通関数をファイルにまとめたりしていたが、VSCodeでデバッグをしているときに外部ファイルで編集した内容が反映されないことがあって困っていた。Windows PowerShell ISEでも同じ発生し、毎回面倒だなと思いながら、エディタの再起動で頑張っていた。

 いろいろとネットを見ているとVSCodeに入れているPowerShellのデバッグ用の拡張機能の設定を変えることで、対応できることが分かったため備忘録として記載しておく。
VSCodeは「PowerShell Integrated Console」でスクリプトが実行されているらしく、拡張機能の設定の初期値が使いまわす設定になっている。
 これのおかげで、一度スクリプトを実行し、変数をインスタンス化して設定しておくことでほかのスクリプトで実行しても変数やAdd-Typeが適用されるというメリット?もあったデバッグの方法を変えるだけで対応できるので、下記のように変更を行うことにする

 ・変更前

 ・変更後("Create Temporary Integrated Console"のチェックボックスを入れる)


こうすることで、外部ファイルを編集したときに内容が反映されるようになる。

2.複数ファイルに分割したときのデバッグ

 Visual StudioでWindowsフォームを作るようにPowerShellでWindowsフォームのプロジェクトを作りたいと思っていろいろと頑張っていた。その際にVSCodeでデバッグするときの設定で初期設定では開いているファイルをデバッグするようになっており、複数画面を構成するときに1クラス1ファイルの構成で画面を作っていると毎回選択するファイルを変更することがめんどくさい・・・。

 【プロジェクトの構成】
   ・外部ファイルをインクルードする処理を記載した「Main.ps1」を最初に読み込み、「Main.ps1」の中で共通で使うクラスなどをインスタンス化し、「Script:clsCom」などのように呼び出す。
        ◆ Main.ps1

   ・各ファイルでは「$frm = New-Object "clsfrm*****"」のように指定して呼び出すことで、フォームのインスタンス化を行う

   ・デバッグするときにMain.ps1を選択してからデバッグを開始する必要がある

 解決策としていろいろとみていたが、VSCodeにある「デバッグの構成」でどのファイルからデバッグを行うのかを設定することがわかったので、設定を追加した。
 


構成を追加したことで、選択肢が増えているので、増えた選択肢を選んでF5でデバッグを行う

コンソールを確認すると「oject\Source>
PS C:\***\****\Source> . 'C:\***\****\Source\Main.ps1'」となっており、Main.ps1が実行されていることがわかる。

Main.ps1をエントリーポイントに指定することができるため、外部ファイルのインクルードやシステム全体で利用する変数の初期化、インスタンス化などを行うことができる。
外部ファイル側で呼び出すときは「Script」スコープで呼び出すことで利用することができる。
















PowerShellでEdgeを自動化(インストール不要。参考:郵便追跡サービス自動操作)

1.経緯について  RPAのソフトをインストールできないので、これまでVBSでCreateObjectでブラウザの自動操作をすることがたまにあった。 ※いざというときの手札として持っているだけで安心感が段違い  見た目上IEがインストールされていなくても、CreateObject...