Search

2023/02/08

powershellの基本:クラスを作ると値やオブジェクトをソートしたりできるよ!

そんなに本格的でないですがPowershellを使ってます。
Excelマクロの拡張&自動処理で使うことが目的。
そんなPowershellのオブジェクトクラスはすごく便利なので自分で作るとさらに便利。
そのクラスの使い方を覚えるまでが苦労したので、ここに記録。
 

■茶番:Powrshell+excelとノートPCの話し

Excelを簡単に扱うならCOM Objectよりはimportexcelが楽です。
Apache License 2.0なのでサーバーでも使える。
https://github.com/dfinke/ImportExcel

PowershellでExcelの作成、Excel無しでもOK:Import-Excel


Exccelは単体アプリで1.5万ほど。
Word使うならLibreOfficeで十分かも?
ライセンスの移動すればずっと使える。
Microsoft Excel 2021(最新 永続版)|オンラインコード版|Windows11、10/mac対応|PC2台

軽く使うならWPSOfficeが便利。
Excel、Word、PowerPoint互換ソフト。3500円くらい。
PC間のライセンスの移動が簡単。中古PC買うとおまけでもらえる。
選択セルの十字の色付けが便利&なぜかCOM Objectも使える!
キングソフト WPS Office 2 - Personal Edition|ダウンロード版 
MS Excelで開かなくときもあるよ!
そのときはxls保存してxlsx保存で開ける。


フォントはフリーので。
2023年用、日本語のフリーフォント649種類のまとめ -商用サイトだけでなく紙や同人誌などの利用も明記

 

さらに、以下 ノートPCの記録

前に買った10万円のノートPCで使ってます。
Ryzen5搭載&2,560×1,920という不思議な画素数に惹かれた。
ASUS ノートパソコン Vivobook 15X OLED M1503QA Windows 11 WPS office付き 15.6型 M1503QA-L1202W メモリ8GB 薄型軽量 長時間駆動バッテリー 有機ELディスプレイ

といっても、中古のSurfacePro5のがよく使う。
軽いので持ち運び便利。6万くらいと安い。
AffinityDesignerもIllustratorもそれなりに動く。
マイクロソフト Surface Pro 5 Win11 Office H&B 2019搭載 12.3型(2736x1824) / Core i5 7300U /メモリ8GB / SSD256GB / LTE / 無線LAN / Bluetooth (整備済み品)

さらにヘビーユースなのが中古のノートPC。
Office使えて3.5万円。頑丈なので誰かが落としても壊れない。
マウスは有線なので無くならない。
SSD+Excel+テンキー+フルHD+WIFI+メモリ4GB以上なら困らない。
ビジネス用はWIFIなしもあるのでそこだけ注意。
Lenovo ThinkPad L560 / 第6世代Core i5 / メモリ:16GB / SSD:120GB / 15.6インチ ノートパソコン / Windows 11 / MS Office 2019 / テンキー、DVD、Webカメラ内蔵 / ミニDisplayport / USB3.0 / Wi-Fi (整備済み品)


20万で1台よりも、複数拠点に分けて使える端末があった方が安心できる。
なにかあったときになんとかなる。
iPad、iPhoneがあっても、ノートPCないと仕事がはかどる!
Powershellが便利。


■ここから本題

クラスのオブジェクトなのでSortとかできる。


$resArry = @();  #Objectを格納するArrayとして使っていきます。

class kihon
{
 [int] $id;
 [string] $names;
 [int] $renban;
}


for($i=0;$i -lt 10;$i++)
{
 $objKihon = New-Object kihon; #Objectになる
 $objKihon.id = $i;
 $objKihon.names = "kihon" + $i;
 $objKihon.renban = Get-Random -Maximum 200 -Minimum 1;
 $resArry += $objKihon; #配列として追加
}

 

$resArry
id names  renban
-- -----  ------
 0 kihon0     93
 1 kihon1    190
 2 kihon2      8
 3 kihon3     82
 4 kihon4     57
 5 kihon5    159
 6 kihon6    158
 7 kihon7    134
 8 kihon8     21
 9 kihon9    191

 

$resArry | Sort-Object -Property renban #連番でソートする

id names  renban
-- -----  ------
 2 kihon2      8
 8 kihon8     21
 4 kihon4     57
 3 kihon3     82
 0 kihon0     93
 7 kihon7    134
 6 kihon6    158
 5 kihon5    159
 1 kihon1    190
 9 kihon9    191



クラスのなのでメソッドも作れます。

1)よくやるWindowsの作業をPowershellで書く
2)WindowsのVPSをレンタルサーバーで時間ごとに回す
3)自動処理する!

これを外部からhttpでアクセスしてウェブアプリ化を目指す。
単純なものほど保守しやすいのが理由。


参考リンク)
↓とってもわかりやすい!
MURA's HomePage様
超簡単な PowerShell Class の使い方(その1)
http://www.vwnet.jp/windows/PowerShell/2017082001/PSv5Class01.htm

0 件のコメント:

コメントを投稿