Muni Bus

パソコンの操作方法や設定方法を忘れないようにメモしています。ブログを一回引っ越ししているので、所々表示がかなり乱れています・・・

【PowerShell】文字列のハッシュ値を得る

MemoryStreamクラスとStreamWriterクラスを使いストリームを作成し、Get-FileHashコマンドレットを使う。

PS > $ss = [System.IO.MemoryStream]::new()
PS > $sw = [System.IO.StreamWriter]::new($ss)
PS > $sw.write("鈴木みのり")
PS > $sw.Flush()
PS > $ss.Position = 0
PS > Get-FileHash -InputStream $ss -Algorithm MD5 | Select-Object Hash
Hash
----
2CDCDF384125AC19C173E9517B23847B
PS > $ss.Position = 0
PS > Get-FileHash -InputStream $ss -Algorithm SHA1 | Select-Object Hash
Hash
----
728D6A009B1700F9759ED2B502A0F673820700D5
PS > $ss.Position = 0
PS > Get-FileHash -InputStream $ss -Algorithm SHA256 | Select-Object Hash
Hash
----
4A806BF1E967F0764841AABCB3E634316F4B19BE1DC9244480CD2C26C315DB2B
PS > $ss.Position = 0
PS > Get-FileHash -InputStream $ss | Select-Object Hash
Hash
----
4A806BF1E967F0764841AABCB3E634316F4B19BE1DC9244480CD2C26C315DB2B
PS > $ss = [System.IO.MemoryStream]::new()
PS > $sw = [System.IO.StreamWriter]::new($ss)
PS > $sw.write("本渡楓")
PS > $sw.Flush()
PS > $ss.Position = 0
PS > Get-FileHash -InputStream $ss -Algorithm MD5 | Select-Object Hash
Hash
----
9ADF030A3E1852802DEADB793C4EAB0F
PS > $ss.Position = 0
PS > Get-FileHash -InputStream $ss -Algorithm SHA1 | Select-Object Hash
Hash
----
BE0A600D132ECCFB2ED41A0424189EFE210E8DFF
PS > $ss.Position = 0
PS > Get-FileHash -InputStream $ss -Algorithm SHA256 | Select-Object Hash
Hash
----
443E41893A26EA324275A26F89A48812F7AC0B687BEBF0BADDADCD0996116405
PS > $ss.Position = 0
PS > Get-FileHash -InputStream $ss | Select-Object Hash
Hash
----
443E41893A26EA324275A26F89A48812F7AC0B687BEBF0BADDADCD0996116405

【PowerShell】変数の型を調べる

GetTypeメソッドを使う。終わりのほうの例のとおり、配列であることも確認でき、個々の要素の型も調べることができる。

PS > $n = 1
PS > $n.GetType()
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Int32                                    System.ValueType
PS > $d = 2.3
PS > $n.GetType()
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Int32                                    System.ValueType
PS > $n = 1
PS > $n.GetType()
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Int32                                    System.ValueType
PS > $d = 2.3
PS > $d.GetType()
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Double                                   System.ValueType
PS > $s = "鈴木みのり"
PS > $s.GetType()
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object
PS > $s = "鈴木みのり", "セナディア"
PS > $s.GetType()
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array
PS > $s[0].GetType()
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object

【PowerShell】配列の要素の先頭に要素を追加する

+演算子を使う。先頭に挿入する要素は@( )で囲み、要素数が一つの配列であることを明示する必要がある。

PS > $s = "石見舞菜香", "和多田美咲", "のぐちゆり"
PS > $s
石見舞菜香
和多田美咲
のぐちゆり
PS > $s = @("鈴木みのり") + $s
PS > $s
鈴木みのり
石見舞菜香
和多田美咲
のぐちゆり
PS > $s.Length
4

【PowerShell】配列の要素の最後に要素を追加する

,演算子を使う。最後に追加する要素は@( )で囲み、要素数が一つの配列であることを明示する必要がある。

PS > $s = "鈴木みのり", "石見舞菜香", "和多田美咲"
PS > $s
鈴木みのり
石見舞菜香
和多田美咲
PS > $s = $s + @("のぐちゆり")
PS > $s
鈴木みのり
石見舞菜香
和多田美咲
のぐちゆり
PS > $s.Length
4

【PowerShell】配列から要素を取り出す

[ ]を使う。[ ]内に数値でインデックス(0~)を指定する。インデックスは0から始まる数値であることに注意。

PS > $s = "鈴木みのり", "石見舞菜香", "和多田美咲", "のぐちゆり"
PS > $s[0]
鈴木みのり
PS > $s[2]
和多田美咲

同時に複数の要素を取り出すこともできる。要素が存在しないインデックスを指定すると、何も返さない。

PS > $s[0, 2]
鈴木みのり
和多田美咲
PS > $s[1..3]
石見舞菜香
和多田美咲
のぐちゆり
PS > $s[4]
PS >

【PowerShell】画像のdpiを調べる

System.Drawing名前空間のImage.FromFileメソッドでImageを作成して、HorizontalResolution、VerticalResolutionプロパティを参照すればよい。以下はImageMagickを使用してロゴの画像ファイルを作成し、そのdpiを調べた例。水平方向のdpiはHorizontalResolution、上下方向のdpiはVerticalResolution。それぞれ96dpiであることがわかる。カレントディレクトリのファイルを指定するために、Get-Locationコマンドレット(エイリアス:gl)を利用している。

PS > magick convert logo: magick_logo.png
PS > Get-ChildItem magick_logo.png | Select-Object Name, Length
Name            Length
----            ------
magick_logo.png  27434
PS > Add-Type -AssemblyName System.Drawing
PS > $cdir = (gl).Path
PS > $img = [Drawing.Image]::FromFile($cdir + "\magick_logo.png")
PS > $img
Tag                  :
PhysicalDimension    : {Width=640, Height=480}
Size                 : {Width=640, Height=480}
Width                : 640
Height               : 480
HorizontalResolution : 96
VerticalResolution   : 96
(以下、表示省略)
PS > $img.HorizontalResolution
96
PS > $img.VerticalResolution
96

【PowerShell】ディレクトリ内のファイルやディレクトリを一覧表示する

Get-ChildItemコマンドレットを使う。-Pathオプションに一覧表示したいディレクトリを指定する。

PS > Get-ChildItem -Path C:\Windows\IME
    ディレクトリ: C:\Windows\IME
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2024/03/13     22:19                en-US
d-----        2024/02/22     22:22                IMEJP
d-----        2024/02/22     22:22                IMEKR
d-----        2024/02/22     22:22                IMETC
d-----        2024/03/13     22:19                ja-JP
-a----        2022/05/07     14:19         125952 SPTIP.DLL
PS > Get-ChildItem -Path C:\Windows\IME -File
    ディレクトリ: C:\Windows\IME
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/05/07     14:19         125952 SPTIP.DLL
PS > Get-ChildItem -Path C:\Windows\IME -Directory
    ディレクトリ: C:\Windows\IME
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2024/03/13     22:19                en-US
d-----        2024/02/22     22:22                IMEJP
d-----        2024/02/22     22:22                IMEKR
d-----        2024/02/22     22:22                IMETC
d-----        2024/03/13     22:19                ja-JP

エイリアスはdirが割り当てられている。-Pathを明示しない場合は第1引数が-Pathオプションに指定したものとして扱われる。

PS > dir C:\Windows\IME -af
    ディレクトリ: C:\Windows\IME
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/05/07     14:19         125952 SPTIP.DLL
PS > dir C:\Windows\IME -ad
    ディレクトリ: C:\Windows\IME
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2024/03/13     22:19                en-US
d-----        2024/02/22     22:22                IMEJP
d-----        2024/02/22     22:22                IMEKR
d-----        2024/02/22     22:22                IMETC
d-----        2024/03/13     22:19                ja-JP

【Unity】「アクティブなライセンスがありません プロジェクトを作成して開くには、認証済みライセンスが必要です。」

ライセンス登録されていない。ライセンス登録すればよい。以下は、無料のPersonalライセンスを登録する方法。

  1. 右上の「ライセンスを管理」をクリック。「環境設定」のウィンドウが表示される。
  2. 右上の「追加」をクリック。「新しいライセンスを加える」ウィンドウが表示される。
  3. 上から三番目「無料のPersonalライセンスを取得」をクリック。
  4. 「同意してPersonalのライセンスを取得」をクリック。
  5. 「環境設定」のウィンドウに戻り、右側に「Personal」のライセンスが表示されるはず。この手続きを行った日がアクティベーション日として表示されているはず。これで、無料のPersonalライセンスが登録された。右上の×印をクリックすればウィンドウは閉じて、最初のウィンドウに戻る。