ペネトレーションしのべくん

さようなら、すべてのセキュリティエンジニア

【PowerShell】あのLinuxコマンドのPowerShell版が知りたいなら、とりあえずLinuxコマンドのまま実行しとけ(自戒)

はじめに

私用PCとしてしばらくUbuntuを使っていたんですが、ディスプレイとの接続など細かなところで問題が起きるので、Windowsに戻ってきました。Linux恋しさにWSLを常用しているんですが、WindowsとWSLとの行き来が完全に透過的とは言えずめんどくさいと思うことが多いし、会社支給PCなんかだとWSLが使えなかったりします。簡単なことはPowerShellを使ってWindows側で済ませちゃいたい、そんなモチベーションでこの記事を書くことにしました。え?Mac?高い。

Linuxコマンドのエイリアスがついているものがある

いくつかのPowerShellコマンドにはLinuxコマンドのエイリアスがあることを確認しています。helpコマンドに記載があるものとないものがあるようで、以下に列挙する例はそれらが混在しています。「Linuxの〇〇って、PowerShellではどういうコマンドなんだっけ?」と思ったら、とりあえず「help {{ 任意のLinuxコマンド }}」してみるか、いっそLinuxコマンドのまま実行してみるのも手ですね。

オプションが分からなければhelp(Get-Help)コマンドを使う

オプションはLinuxコマンドを踏襲していないので、覚えるまで「help {{ コマンド名 }}」で都度確認しましょう。ヘルプが出て来なければ「help {{ コマンド名 }} -Online」を実行すると各コマンドのヘルプページへジャンプします。

Get-Aliasでエイリアス一覧を確認する

ネット検索を駆使しながら対応表を作っていたところ、PowerShellコマンドのエイリアス一覧を表示する「Get-Alias」コマンドの存在を突き止めました。エイリアスがあるものはたいていこれで分かりそうですね。対応表なんていらなかったんや。

PS C:\Users\shinobe179> Get-Alias

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           % -> ForEach-Object
Alias           ? -> Where-Object
Alias           ac -> Add-Content
Alias           asnp -> Add-PSSnapin
Alias           cat -> Get-Content
Alias           cd -> Set-Location
...

まとめ

総じて「{{ Linuxコマンド名 }} powershell」でググったらいいじゃん」という話なんですが、それをやる前にPowerShellの画面だけで解決できることもあるんやで、ということが分かりました。今後はInvoke-WebRequestなど個々のコマンドやピンポイントな課題に関する記事を上げていきたいと思います。