アニメ『みるタイツ』ティザーPV
アニメ『みるタイツ』
よくわからんです。
もう一度関数の確認してみます。
function get_regkey($key){ 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 ~省略~
でも、結果を見ると、同じレジストリキーが現れるのがおかしいですね。
そもそもreg queryの結果を再度使うことがおかしいのかも。
確認してみます。
PS C:\Users\takk> reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1 Install REG_DWORD 0x1 PID REG_SZ 89383-100-0001260-04309 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\0409 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds PS C:\Users\takk>
あっ!
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1を指定したときに、
結果に、
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1が出力されてしまってます。
過去に出現したレジストリキーの場合は除外する処理が必要ですね。
function get_regkey($arg){ function proc($key){ if($all[$key] > 0){ echo "MATCH" return 0 } $all[$key] = 1 reg query $key | % { if($_ -match "HKEY"){ proc $_ echo $_ } } } $all = @{} proc $arg }
連想配列を使って、こんな感じでよいでしょうか。
実行してみます。
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
同じレジストリキーが表示されたので、まだバグってますね。
コメント