1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

netsh advfirewall firewall show rule name=all の結果をソートする

分かる人にしか分らないタイトルを付けました。

この記事は、PowerShell Advent Calendar 2020 の 6 日目(遅刻)の記事です。空いていたので、最近使った小ネタを投下させて頂きます。

本文

Windows のファイアウォールをエクスポートするときに、タイトルにあるようなコマンドを実行します1が、
出力結果がソートされておらず、変更前後で比較したいときに困ることがあります。

ソートして出力するオプションがあるのかも知れませんが、/? でそれらしい説明が見つけられなかったので PowerShell を使って出力結果のソートを試みます。

以下のようにします。

netsh advfirewall firewall show rule name=all dir=in type=dynamic | out-string | set txt
$txt.Trim() -replace "\r\n\r\n", "`r`n@@@@@" -split "@@@@@" | sort

1行目で、netsh の出力を変数 txt に保存しています。普通に出力すると行毎に分割された文字列の配列になってしまうところを、out-string でまとめて1つの文字列にしています。
2行目で、空白行に @@@@@ を入れてから split しています。特に @@@@@ を入れなくても連続した改行で直接分割したら大丈夫だと思います。ただし、先頭に空白行があるので最初に Trim() しないと正しくソートできません。

以上です。


  1. Get-NetFirewallRule を使うとソートすることはできますが、遅いので使いづらいです。。。 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?