2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PowerShellAdvent Calendar 2020

Day 6

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

Posted at

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

この記事は、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 を使うとソートすることはできますが、遅いので使いづらいです。。。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?