1.はじめに
最近というかいつもですが、Windows10は勝手にバージョンアップされるため困ったものです。特にパワーシェル(PSH)はいつも色々変更されているようで、Windows10初期バージョンと比べてパワーシェル起動時間が10倍以上遅くなったように思います。そこでパワーシェル起動時間を少しでも高速化する[ngen.exe]を使ったPSH短文、そして合わせて、カレンダ表示PSH短文、windowsコマンドなど「List窓項目をダブルクリック起動利用」できるツールボックスのバッチファイル(.bat)を作成したので紹介します(結構便利です)。なお他のPSH短文例やWindowsコマンド例は参考サイトに沢山ありますのでコピーし登録してご利用頂くと幸いします。 PSH短文関連サイト、Winコマンド関連サイト
<注意>このツールの動作確認は十分実施していますが、ご利用に当たって何か問題が発生した場合、自己責任での対応でお願いいたします。
2.事前準備
それでは【マウス右ボタン⇒[新規作成]⇒テキストドキュメント】押下して新規ファイルを作成し、[新しいテキスト ドキュメント.txt] をダブルクリックしメモ帳を起動ください。
次に下記の[コピーList]をメモ帳にコピー&ペーストして貼り付けます。
そして、メモ帳の左上[ファイル]⇒[名前を付けて保存]⇒ファイル名[PshToolBox.bat]を入力し⇒文字コード[ANSI]に設定して[保存]を押下した後、メモ帳を終了します。
★注:文字コード欄が[ANSI]設定であることを確認してください。
あとは[PshToolBox.bat] をダブルクリックすると下図のList窓が開きます。
3.利用方法
(1) [パワーシェル起動高速化]をダブルクリックすると、PSH管理者[窓]へ入力し[ngen.exe]を起動して、パワーシェル高速化処理が始まります。(最初は結構時間がかかります。)
(2) [大きいカレンダ]をダブルクリックすると、大きなフォントでのカレンダ窓が表示されます。
(3) [Tool_List編集]をダブルクリックすると、メモ帳で[PshToolBox.bat]が開きますので、自由にPSH短文やWindowsコマンドを登録保存して使います。PSH短文関連
(4) 良く使うWindowsコマンドも登録しておくと何かと便利です。Winコマンド関連
(5) 複数利用から背景色を7行目(\$BakColor)で設定可能にしました。背景色の設定例
4.コピーList
(履歴1102:1/2行目 Rem->RemoteSignedに修正)
(履歴1115:7/13/34行目 背景色の設定追加)
@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窓関数を処理して、ダイアログ表示します。
以上