パワーシェルの高速化処理、カレンダ表示、Windowsコマンドなど、ツールボックスに登録して使う便利なバッチファイル 

## 1.はじめに
　最近というかいつもですが、Windows10は勝手にバージョンアップされるため困ったものです。特にパワーシェル(PSH)はいつも色々変更されているようで、Windows10初期バージョンと比べてパワーシェル起動時間が10倍以上遅くなったように思います。そこでパワーシェル起動時間を少しでも高速化する[ngen.exe]を使ったPSH短文、そして合わせて、カレンダ表示PSH短文、windowsコマンドなど「List窓項目をダブルクリック起動利用」できるツールボックスのバッチファイル(.bat)を作成したので紹介します(結構便利です)。なお他のPSH短文例やWindowsコマンド例は参考サイトに沢山ありますのでコピーし登録してご利用頂くと幸いします。 [PSH短文関連サイト](https://ryupapa008.blogspot.com/2024/08/guipsh9.html)、[Winコマンド関連サイト](https://ryupapa008.blogspot.com/2024/08/guiwin_24.html)
＜注意＞このツールの動作確認は十分実施していますが、ご利用に当たって何か問題が発生した場合、自己責任での対応でお願いいたします。
## 2.事前準備
　それでは【マウス右ボタン⇒[新規作成]⇒テキストドキュメント】押下して新規ファイルを作成し、[新しいテキスト ドキュメント.txt] をダブルクリックしメモ帳を起動ください。
　次に下記の[コピーList]をメモ帳にコピー＆ペーストして貼り付けます。
そして、メモ帳の左上[ファイル]⇒[名前を付けて保存]⇒ファイル名[PshToolBox.bat]を入力し⇒文字コード[ANSI]に設定して[保存]を押下した後、メモ帳を終了します。
★注：文字コード欄が[ANSI]設定であることを確認してください。
　あとは[PshToolBox.bat] をダブルクリックすると下図のList窓が開きます。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628574/c9cdd065-e689-c60c-047d-4ba2c4df2345.png)

## 3.利用方法
(1) [パワーシェル起動高速化]をダブルクリックすると、PSH管理者[窓]へ入力し[ngen.exe]を起動して、パワーシェル高速化処理が始まります。（最初は結構時間がかかります。）
(2) [大きいカレンダ]をダブルクリックすると、大きなフォントでのカレンダ窓が表示されます。
(3) [Tool_List編集]をダブルクリックすると、メモ帳で[PshToolBox.bat]が開きますので、自由にPSH短文やWindowsコマンドを登録保存して使います。[PSH短文関連](https://ryupapa008.blogspot.com/2024/08/guipsh9.html)
(4) 良く使うWindowsコマンドも登録しておくと何かと便利です。[Winコマンド関連](https://ryupapa008.blogspot.com/2024/08/guiwin_24.html)
(5) 複数利用から背景色を７行目(\\$BakColor)で設定可能にしました。[背景色の設定例](https://ryupapa008.blogspot.com/p/blog-page_6.html)

### 4.コピーList  
  (履歴1102:1/2行目 Rem->RemoteSignedに修正)
  (履歴1115:7/13/34行目 背景色の設定追加)
```shell:pshToolBox.bat
@powershell -exe RemoteSigned -win Hid "$fl=\"%~f0\";$ss=[scriptblock]::create((Cat $fl|?{$_.readcount-gt 1})-join\"`n\");&$ss" %*&exit
##[DBG]@powershell -exe RemoteSigned "$fl=\"%~f0\";$ss=[scriptblock]::create((Cat $fl|?{$_.readcount-gt 1})-join\"`n\");&$ss" %*&Pause&exit

##Ver1.01 2024/1015 by ryu ----
using namespace System.Windows.Forms; Add-Type -AssemblyName System.Windows.Forms,System.Drawing; ##★GUI
function dbg($cc){[MessageBox]::Show($cc)}; function dbc($zcc){Write-Host $zcc;}; ##★DBG
$BakColor="#CCFFC8"; $global:szColorUrl='https://ryupapa008.blogspot.com/p/blog-page_6.html';
##★[Listツールの登録一覧]--------------------------------
$global:zzToolList="___[Ver1.01]_______;---
    [ﾊﾟﾜｰｼｪﾙ起動高速化];    ssNGen
    [大きいカレンダ];       ssBigCalen
    [Tool_List編集];        notepad.exe $fl 
    [背景色Codeのサイト表示];start $szColorUrl    
    ---;                    ---
    パワーシェル[窓];       Start powershell 
    DOS[窓];                Start cmd
    パワーシェル[管理窓];   Start -Verb runas powershell 
    ---;                    ---
    Windows[設定];          start ms-settings:
    電卓_計算;              calc.exe
    タクスマネージャ;       taskmgr.exe
    デバイスマネージャ;     devmgmt.msc
    コントロールパネル;     control.exe
    Windows管理ツール;      control.exe admintools
    システム情報;           msinfo32.exe
    システム構成;           msconfig.exe
    デスク掃除(clean);      cleanmgr.exe
    ドライブ最適化;         dfrgui.exe
";##-------------------------------------------------------

##●Listツールの表示処理  ##★各項ダブルクリック実行
##
function global:ssToolBoxList($zzList){ $global:fmToolBox =New-Object Form -Pro @{ Size ="320,540"; Text="【PSH Tool Box】"};
    $global:szListBox=New-Object ListBox -Pro @{ Dock="Fill"; Font='"BIZ UDゴシック",12'; BackColor=$BakColor;}; $fmToolBox.Controls.Add($szListBox); 
     $global:szToolList=$zzList.split("`n"); foreach($zcc in $szToolList){ $aa=$szListBox.Items.Add( ($zcc.split(";"))[0] );};
    $szListBox.Add_DoubleClick({ $zcm=$szToolList[$szListBox.SelectedIndex].split(";"); $zcc1=$zcm[1].trim(); Iex($zcc1); });
};

##●PSH起動の高速化
##
function ssNgen(){ $zcc='-noe cd c:\
  Set-Alias ngen   @(dir (join-path ${env:\windir} \"Microsoft.NET\Framework\")   ngen.exe -recurse |sort -descending lastwritetime)[0].fullName
  Set-Alias ngen64 @(dir (join-path ${env:\windir} \"Microsoft.NET\Framework64\") ngen.exe -recurse |sort -descending lastwritetime)[0].fullName
  [appdomain]::currentdomain.getassemblies() | %{ if($_.location -match $(\"\\assembly\\GAC_64\") ){
  ngen64 install $_.location }else{ ngen install $_.location }; } ';
  Start -Verb runas -FilePath powershell.exe -Arg "$zcc";
};

##●大きいカレンダ
##
function ssBigCalen(){ $fmCal=New-Object Form -Pro @{ Location="100,50"; Size="380,500"; };
  $zMonCal=New-Object MonthCalendar -Pro @{ Font="'Meiryo UI',28"; TrailingForeColor="192,192,0"; }; 
  $fmCal.Controls.Add($zMonCal); $fmCal.Showdialog();
};

##★List窓の表示
(ssToolBoxList $zzToolList); $fmToolBox.ShowDialog();##★表示
```

### 5.プログラム説明
[1行目] パワーシェル(PSH)文をバッチファイルで起動する文です。
[2行目] コメントにしてますが、何か新規のPSH文をデバッグするとき、こちらの文を使いDOS窓表示モードにしてデバッグします。
[5行目] PSHをGUI窓で利用するときの文です。
[6行目] 同上のときのデバッグ用関数です。 利用例）dbg "aa=\\$aa";  dbc "bb=\\$bb"
[8～28行目] List表示の登録項目です。 [登録コマンド名称; 起動コマンドや関数]
[ssToolBoxList 関数] List登録の窓生成、項目ダブルクリック起動などです。
[ssNgen 関数] PSH起動の高速化処理です。
[ssBigCalen 関数] カレンダ表示処理です。
[最後の行] List窓関数を処理して、ダイアログ表示します。
以上