Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
システム管理者のファーム時代の恋人といえば? はい、まぎれもなく ipconfig コマンドです。ipcofig コマンドを使用するとネットワークカードの設定がざくっとみられるので、科学万能の現代であってもとても便利です。
ipconfigコマンドを使っていると、その出力結果の一部を再利用したい!なんて思うことがあります。
そんなときには迷わずPowerShellコンソールを使ってください。
PowerShell コンソールを使用すれば、コマンドレットに限らず、古のDOS系コマンドの出力結果もオブジェクトとしてゲット!することができます。
まずは、PowerShell コンソールで以下のように入力してみましょう。
| PS C:\> $result = ipconfig /all |
これで、ipconfig /all の結果は、$result というオブジェクトに格納されました。以下のように入力すれば $result の結果が表示されます。
| PS C:\> $result
Windows IP 構成 ホスト名 . . . . . . . . . . . . : junichia-bandit ・ ・ ・ |
で、本領発揮はこれからです。$result はオブジェクトであるということを思い出してください。
まずはipconfigコマンドの出力結果が何行あるのか確認してみましょう。
PS C:\> $result .Count 121 |
ループ処理なんて一切使わずに、「121行!」という結果をえることができました。感動です。
$result の中の 21行目だけが欲しいとしましょう。そんなときは、以下のように入力します。
※1行目は「0」ですから、21行目は「20」ですよね
| PS c:\> $result [20] 物理アドレス. . . . . . . . . . . : 00-1E-3D-F8-1E-41 |
さらに、上の結果から「00-1E-3D-F8-1E-41」だけが欲しいとしましょう。
| PS C:\> $result[20].Split(":")[1] 00-1E-3D-F8-1E-41 |
これは、$result[20]の結果を、「:(コロン)」で2つに区切り、2つ目の値を抜き出しています。
で、出力結果を見ると左端に空白が入っています。これ、邪魔ですね。
なので、次のようにします。
| PS C:\> $result[20].Split(":")[1].Trim() 00-1E-3D-F8-1E-41 |
Trim() で、両端の空白をすっぱり削除しました。
どうです?たまらないですよね。
もう、DOSプロンプトに戻れそうにありません。
PowerShell と聞くと「スクリプトはなぁ」と拒絶反応を示す方もいらっしゃいますが、こんな処理がたった1行でできてしまうなんて、三田村邦彦くらい素敵ですね。
参考までに、PowerShellのさまざまな使い方に関する資料を勉強会キットとしてアップロードしてあります。是非ダウンロードしてみてください。