Windowsコマンド(reg query)(その13)


アニメ『さくら荘のペットな彼女』(2012)

あなたは何色になりたい。
ドキッとしますねえ。子供の頃は何色にでもなれる気がしていましたが、いまやいろんな色がまざって土色になってる気がします。
このアニメ、当時見てた気がしますが、すっかり内容忘れたのでまた見れています。
モノづくりのアニメだったような気がするので、もう一回みてモチベーションアップしようと思います。

では、再帰処理を作っていきます。

まずはレジストリキーの配下がいない場合のreg queryの結果を確認してみます。

PS C:\Users\takk> reg query "hklm\software\microsoft\software\Microsoft\Shared Tools\Msinfo"

PS C:\Users\takk>

何も表示されませんでした。

この関数を使って再度確認してみます。

function get_regkey($key){
	$arr = @()
	if($key -match "HKEY"){
		$arr+= reg query $key
	}
	return $arr
}
PS C:\Users\takk> get_regkey "HKEY_LOCAL_MACHINE\software\microsoft\software\Microsoft\Shared Tools\Msinfo"

PS C:\Users\takk>

配下のレジストリがないので、表示されなくてOKですね。
次に、一段上のレジストリキーを指定します。

PS C:\Users\takk> get_regkey "HKEY_LOCAL_MACHINE\software\microsoft\software\Microsoft\Shared Tools"

HKEY_LOCAL_MACHINE\software\microsoft\software\Microsoft\Shared Tools\Msinfo
PS C:\Users\takk>

結果が表示されました。

では、再帰処理にしてみます。

function get_regkey($key){
	$ret=@()
	reg query $key | % {
		if($_ -match "HKEY"){
			get_regkey $_
			echo $_
		}
	}
}

使ってみましょう。

>>
PS C:\Users\takk> get_regkey "HKEY_LOCAL_MACHINE\software\microsoft\powershell"
HKEY_LOCAL_MACHINE\software\microsoft\powershell\1
HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\0409
HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\PowerShellEngine
HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\ShellIds
HKEY_LOCAL_MACHINE\software\microsoft\powershell\1
HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\0409
HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\0409
HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\PowerShellEngine
HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\PowerShellEngine
HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\ShellIds\Microsoft.PowerShell
HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\ShellIds\Microsoft.SqlServer.Management.PowerShell.sqlps140
PS C:\Users\takk>

途中で止めました。バグってますね。

つづく

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA