
DOS 時代は否が応でも DOS のコマンドを使わざるを得なかったので、その時代に DOS に慣れ親しんでた人は Windows のコマンドプロンプトも違和感なく使えてたんだけど、時代が変わってコマンドプロンプト廃止とかいう話が出てるようでマジかよって感じ。
コマンドプロンプトはとんでもなく使い勝手は悪いけど簡単だったのに・・
で、コマンドプロンプトから PowerShell に変わったら何がどうなるかっていうと
一番の大きな変更は「黒い画面だったのが青い画面になる」「コマンドがコマンドレットになる」これだ。
しらじらしいが、ちょっと触ってみる。
ファイルリストを表示するなら、コマンドプロンプトでは dir だったけど PowerShell では dir でも ls でも gci でもいける。というか、 PowerShell の由緒正しい?コマンドレットは Get-ChildItem で dir と ls と gci はそのエイリアス。
だから Get-ChildItem は DOS やコマンドプロンプトの dir と同等なんだなと思ったらこれが大違い。 Get-ChildItem はかなりクセモノ。
たとえば、次のコマンドだと普通にファイルリストが取れる。("-Path" は無くても大丈夫)
PS C:\Users\foobar> gci -Path c:\windows
ファイル名に ".dll" を含むファイルのリストを取りたいと思ったら次のコマンド。これも当然ながら思ったとおりに動く。
PS C:\Users\foobar> gci -Path c:\windows -Include "*.dll"
"-Include" を使わずに同じ結果を得ようとする場合、Unix系のシェルだと ls | grep ".dll" みたいにするんだけど、 PowerShell には grep が無いので代わりに Select-String (sls) を使う。
同じくファイル名に ".dll" を含むファイルのリストを取りたいと思って下のようにする。
PS C:\Users\foobar> gci -Path c:\windows | sls .dll
普通に考えたらこれでいけそうなんだけど、出力は全く意図しないとんでもないことに、ファイルを cat したみたい、 PowerShell でいえば Get-Content したみたいになってしまう。
PS C:\Users\foobar> gci -Path c:\windows -Name | sls .dll
"-Name" を追加してファイル名に限定してやる。これなら意図してたとおりに動く。
PowerShell ではコマンドプロンプトと同じく ipconfig などのコマンドも使える。ipconfig は system32 下の ipconfig.exe が実体だからコマンドプロンプトが廃止されても PowerShell で使い続けられるよね?大丈夫だよね。これも一緒に廃止になると不便で困るよ。
PS C:\Users\foobar> ipconfig /all
これはコマンドプロンプトと同じ結果を得られる。
コマンドプロンプトでは find と組み合わせると該当する文字列を含む行だけを取得できる。
C:\Users\foobar> ipconfig /all | find "ゲートウェイ"
これだと、「デフォルト ゲートウェイ」の行だけを表示できる。
しかし、同じコマンドを PowerShell で実行するとエラー。
PS C:\Users\foobar> ipconfig /all | sls ゲートウェイ
のように find を使う代わりに Select-String (sls) を使えばいける。
ところで、コマンドの途中で無駄に日本語が混じるのは打ちにくい。そして PowerShell の画面で日本語を入力すると半角分くらいが崩れて腹立たしいことこの上ない。とくに PowerShell ではコマンドレットを組み合わせて1行に長く打つので文字崩れは響く。これは早めに直してくれないとどうにも困る。
PowerShell で日本語モードと英語モードを切り替えるのは DOS やコマンドプロンプトと同じく chcp 437 (英語モード)、 chcp 932 (日本語モード)。さらに UTF-8 モードに切り替えるのは chcp 65001 だが、 Windows ではコマンドプロンプトもそうだが何故か UTF-8 モードだと日本語入力させて貰えなくなる。それじゃ意味なくない?
と、いうことで、英語モードで先程同様にipconfigで「デフォルト ゲートウェイ」の行を表示するなら下。
PS C:\Users\foobar> chcp 437 画面が切り替わる PS C:\Users\foobar> ipconfig /all | sls gateway
当然だが英語モードでは「デフォルトゲートウェイ」は "Default Gateway" と表示されるのでそれを期待して sls (grep) する文字列は gateway になる。日本語を入力しなくて済むので打ちやすい。
入力面では英語モードを標準にしたいくらいだけど、そうすると日本語メッセージは化けて表示されてしまうのでつらいなぁ。
- Tiny 11をMicrosoftと通信させない名前解決変更
- マイクロソフト PCマネージャというアプリを触ってみた
- Windows 11のシステム要件を満たさないPCでWindows11の大型アップデートを適用
- Windows 11でWindows Updateの自動更新を停止する
- Windows 11でWindows Updateによる更新を手動で停める (後編)
- Windows 11でWindows Updateによる更新を手動で停める (前編)
- Windows 11のシステム要件を満たさないPCでWindows10からWindows11にアップグレード
- WindowsでもUnbound (Remote controlの準備)
- Windows 11リリース (例のごとくシステム要件を満たさないPCにインストール)
- Androidスマホ画面をWindowsで表示 (ワイヤレスディスプレイ プロジェクション)
- Windows 11上で「このPCは現在、Windows 11システム要件を満たしていません」
- MS公式誰でもDLできるWindows 11 インサイダー版を古いPCにインストールと休止無効化設定
- Windows IMEで半角/全角キーの割り当てをIMEオフだけに変更(Linuxも)
- Windows 11システム要件に満たないPCにISOファイル無改造でインストール
- Windows 11上で「このPCではWindows 11を実行できません」
- Windows 11を9年前の超非力なノートPCにインストールしてみた
- 情報セキュリティ Windows 10でUSBメモリの自動実行を不可にする
- 情報セキュリティ Windows 10でUSBメモリの読み書きを不可にする
- Windows 10を旧型ノートPCにクリーンインストールしてみた
- DVDFab 11がリリースされた
- WinlogbeatでWindowsイベントログを可視化 後編
- WinlogbeatでWindowsイベントログを可視化 中編
- WinlogbeatでWindowsイベントログを可視化 前編
- Windows 10のメールでZ-Push (Exchange)を利用する
- Chrome OS (Chromium OS)を触ってみた
- Windows 10の時刻同期設定
- Windowsで写真現像 darktable 2.4
- 音楽プレーヤー Plexamp
- どうしてもWindowsの共有フォルダが見えない対処
- Windows 10 Fall Creators Update