Web Analytics

Technically Impossible

Lets look at the weak link in your statement. Anything "Technically Impossible" basically means we haven't figured out how yet.

PowerShellでの/dev/zero、/dev/random - Set-Contentによるバイナリ・ファイル生成

UNIXにddと言うコマンド*1がある。指定したデバイス、バイト数、ブロック数のデータを読み書きできるコマンドだ。その特性上、ハードディスクやUSBメモリパーティション、セクターのバックアップに用いられたり、光学メディアをISO化するなどの目的で利用される。
同様のコマンドはWindowsには存在しないのだが、代替手段はある。DD for Windows*2だ。

ddはコピーやバックアップ以外に、バイナリ・ファイルの生成、編集にも利用されることがある。DD for Windowsではこれに対応できないのだが、PowerShellで同じことができる。”Set-Content”を用いるのだ。
docs.microsoft.com

バイナリ・ファイルの生成

基本的に、”Set-Content”は文字列操作のコマンドだ。指定ファイル中の文字列を置換することができる。指定ファイルが存在しなければ、指定した文字列を含むテキスト・ファイルが新規作成される。

/dev/zero

この特性を応用して、バイナリ・ファイルを生成することができる。文字列の代わりに、バイト配列を指定するのだ。
例えば、次のコードを実行すると、”my_binary.dat”が出力される。このファイルは、128KBのバイナリ・ファイルだ。

gist.github.com

出力されたファイルの中身を確認すれば、これが「/dev/zero」に相当しているのが理解できる。

/dev/random

同じ方法で「/dev/random」も実現できる。バイト配列を指定の乱数で満たしてやればよい。

gist.github.com

docs.microsoft.com