SnowStack.EncodingProbe.PowerShell 1.3.0 リリースのお知らせ
2026年10月31日に SnowStack.EncodingProbe.PowerShell のバージョン 1.3.0 のリリースを開始したことを、ご報告します。
何が新しくなったか
読み込んでいるファイルに上書きしても、中身を失わなくなりました。 1.2.0 までは、ハードリンクを使ったり、読み込むファイルを書き込み先の後ろに並べたりすると、検出をすり抜けて、読み込み中のファイルの中身が消えることがありました。1.3.0 では、パスの文字列ではなくファイルの実体で比べて、書き込みを止めます。標準の Out-File などは、この場合に中身を失います。ただし Linux / macOS では、ハードリンクの別名と、大文字・小文字だけが違う名前(t.txt と T.TXT)を、同じファイルと判定しません(既知の制限の D2・D5)。
以下のコマンドレットを追加しました。
Import-ProbedCsv : 文字エンコーディングを判定して、CSV ファイルを読み込む。
Export-ProbedCsv : 文字エンコーディング・BOM・改行を指定して、CSV ファイルに書き出す。
どちらも、Windows PowerShell 5.1 でも PowerShell 7.x と同じ結果になります。5.1 の標準の Export-Csv のように日本語が ? になることも、5.1 の標準の Import-Csv のように改行が CR だけの CSV を 0 件として読むこともありません。追記するときは、追記先の文字エンコーディングと改行を引き継ぎ、最後の行に改行が無ければ補ってから追記します。
Resolve-Encoding・Import-ProbedCsv・Export-ProbedCsv には、先頭の N 行だけで判定する -DetectionLineCount を追加しました。巨大なファイルを速く判定するためのものです。Import-ProbedCsv / Export-ProbedCsv では、使う前にファイル全体を検証し、判定を誤っていれば何もせずに止まります。
書き込みで、文字を黙って失わないようにしました。 書き込み先の文字エンコーディングで表現できない文字(Shift_JIS のファイルに追記するハングルなど)を、これまでは ? にして書いていましたが、1.3.0 ではエラーにして、ファイルを元のままにします。
このほか、名前に [ ] があるファイルの扱いや、-Encoding ansi の値など、既存のコマンドの改善と不具合の修正も行っています。
詳細は、以下の固定ページで解説しています。
SnowStack.EncodingProbe 1.3.0 解説 — CSV の読み書きと、文字を失わない書き込み
また、NuGet パッケージの SnowStack.EncodingProbe 1.3.0 も同時にリリースしています。公開 API の変更はありませんが、BOM 無しの UTF-16 / UTF-32 の判定など、判定処理の不具合を 3 件直しました。NuGet パッケージを直接お使いの方にも、1.3.0 への更新をお勧めします。
更新するときの注意
1.3.0 には、1.2.0 までと結果が変わる変更があります。主なものは次のとおりです。
- 文字が
?になるのを承知で書いていたスクリプトは、エラーで止まるようになります - 英数字だけのファイル(
us-asciiと判定されるもの)に日本語を追記すると、UTF-8 で書かれます - Windows の
-Encoding ansi/oemは、システムのロケールの値になります(「地域」の「形式」をシステムのロケールと違う値にしている場合に、値が変わります) Get-ChildItemから渡したファイルは、名前に[ ]があってもワイルドカードとして展開されず、そのファイルそのものを読み書きします- Linux / macOS で 1 MiB を超えるファイルに上書きすると、ハードリンクが切れ、ACL と拡張属性が消えます。Linux / macOS には、ほかにも既知の制限があります
一覧と詳しい説明は、解説ページの「1.2.0 からの挙動の変更」「更新するときの注意」「Linux / macOS の既知の制限」をご覧ください。
入手方法
PowerShell ギャラリーに登録しています。
# 新しくインストールする(PowerShell 7.x)
Install-PSResource SnowStack.EncodingProbe.PowerShell
# インストール済みの 1.2.0 などを更新する
Update-PSResource SnowStack.EncodingProbe.PowerShell
モジュールを読み込んだままの PowerShell では、更新した版に切り替わりません。更新した後は、PowerShell を開き直してください。
Windows PowerShell 5.1 でのインストール方法は、以下の記事で解説しています。
SnowStack.EncodingProbe.PowerShell を Windows PowerShell 5.1 へインストールする方法
NuGet パッケージは、NuGet.org から入手できます。
dotnet package add SnowStack.EncodingProbe
機能説明書
インストール方法や使い方については、こちらの固定ページをご覧下さい。