前提・実現したいこと
現在設定しているレジストリやグループポリシーなどの値が、自分の指定した値になっているかどうか一気にチェックしたいです。
以下の手順によって行おうと考えています。
◆手順
- レジストリの値をテキストファイルに書き出す
- 書き出されたテキストファイルと、自分の用意していた値の一覧をエクセルに並べ、EXACT関数で比べる
発生している問題・エラーメッセージ
レジストリの値をファイルに出力する方法がわかりません。
試したこと
レジストリ ファイル出力 などでググる >エクスポートのやり方ばかり出てきてしまう
補足情報(FW/ツールのバージョンなど)
やり方は問いませんが、とにかく早く解決でき、今後のキッティング作業などにも生かせる方法を勉強したいです。
大変初歩的な質問で申し訳ございませんが、知恵を貸していただけると幸いです。
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
時間が経っているので解決済みかもしれませんが
一応...
レジストリをファイルに書き出してしまうと
Excelで比較するのにわざわざ取り込まなければなりませんよ?
どちらかにしたほうがいいと思います。
Excel VBAでも出来ますがExcelは有料なので入ってないパソコンがあったときに
困るかもしれません。
powershellだけで解決することをお勧めします。
サンプル... を提示します。
そのまま使えますが、ちゃんと理解できれば設定を確認するだけではなく
違っていたら書き換えることも出来るようになります。
今後のためにちゃんと理解するすることをお勧めします。
出力はCSV
ですのでエクセルでもメモ帳でも編集できます。
比較もExcelの関数を使わずにそのままpowershellでやったほうが楽です。
項目は好きなように変えてください。
変え方がわからなければ聞いてください。
まず下記のコードを.ps1
で保存してください。
名前は好きにつけてください。
powershell
1#レジストリ設定値確認# 2 3$ErrorActionPreference = "Stop" 4$Error.Clear() 5 6try 7{ 8#初期処理# 9 if (!($PSScriptRoot -eq "")) 10 { 11 #カレントディレクトリをスクリプトパスに設定 12 Set-Location -Path($PSScriptRoot) 13 } 14 #カレントディレクトリの取得# 15 $ScriptRoot = $(Convert-Path -Path $(Get-Location)) 16 17 18 #登録関数の削除 19 Remove-Item Function::_* 20 21 # -レジストリの読み込み関数の定義- 22 # 使用例 23 # $RegPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 24 # $RegKey = "HideFileExt" 25 # RegGet $RegPath $RegKey 26 # レジストリ読み取り 27 function _RegGet( $RegPath, $RegKey ){ 28 29 # default で HKLM: HKCU: 以外のルートキーが割り当てされていないので割り当てておきます 30 $null = New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT 31 $null = New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS 32 $null = New-PSDrive -Name HKCC -PSProvider Registry -Root HKEY_CURRENT_CONFIG 33 # レジストリそのものの有無確認 34 if( -not (Test-Path $RegPath )){ 35 Write-host "[INFO] $RegPath not found." 36 return "NoReg" 37 } 38 39 # Key有無確認 40 $Result = Get-ItemProperty $RegPath -name $RegKey -ErrorAction SilentlyContinue 41 # キーがあった時 42 if( $Result -ne $null ){ 43 return $Result.$RegKey 44 } 45 # キーが無かった時 46 else{ 47 return "Nokey" 48 } 49 } 50 51 if ($(Get-Item function::_*).count -eq 0) 52 { 53 throw "関数が定義されていません。" 54 } 55} 56catch 57{ 58 Write-Host $Error 59 read-host "Enter を押して終了" 60} 61$CSVFullName = "$ScriptRoot\SettingValue.csv" 62 63$CSV = Import-Csv -Path $CSVFullName -Encoding Default 64$CSV | foreach ` 65{ 66 $CurrentValue = _RegGet -RegPath $($_.Path) -RegKey $($_.key) 67 $_.CurrentValue = "$CurrentValue" 68 if ($_.SettingValue -ceq $_.CurrentValue) 69 { 70 $_.Diff = "Matched" 71 72 } 73 else 74 { 75 $_.Diff = "Mismatch" 76 } 77} 78$CSV 79$CSV | Export-Csv -Path $CSVFullName -Encoding Default -NoTypeInformation 80 81Write-host "レジストリの確認が完了しました。" 82Read-Host "終了するには Enter を押してください..."
次にメモ帳を開いて次の下記の内容をSettingValue.csv
で保存してください。
こちらは名前は変えないでください。
保存場所は先ほどの.ps1
と同じディレクトリ(フォルダ)にしてください。
csv
1"Comment","Path","Key","SettingValue","CurrentValue","Diff" 2"ショートカット末尾の文字列","HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer","link","0 0 0 0","","" 3"CD-ROMドライブの自動実行","HKLM:\SYSTEM\CurrentControlSet\Services\Cdrom","Autorun","1","",""
あとは最初のps1を実行してみてください。
コンソールに結果が表示されます。
見終わったらEnterを押して終了してください。
そのあとはSettingValue.csv
を開いてみてください。
CurrentValue(現在の設定) と Diff(SettingValue(自分の指定した値)との比較結果)が変更されているはずです。
どうでしょうか?
CSVの項目を好きに書き足せばほかのレジストリ設定も確認できます。
注意点...
レジストリのパスの指定方法は
一番最初のHKEY_CLASSES_ROOT\
等はHKCR:\
のようにHK
と_
の後の最初の一文字をとって\
の前に:
をつけたものに変更してください。
このスクリプトはWin10 PSVersion 5.1.17763.1 でしか実行確認をしていません。 必要に応じて書き換えてください。
投稿2018/10/19 10:02
総合スコア305
0
DOSコマンドだと「reg query」
https://www.pg-fl.jp/program/dos/doscmd/reg_query.htm
Powerhsell だと「Get-Item」
https://docs.microsoft.com/ja-jp/powershell/scripting/getting-started/cookbooks/working-with-registry-entries?view=powershell-6
かなと思われます。結果をテキストファイルにリダイレクトしてあげればご希望のことができると思います。
投稿2018/10/10 06:14
総合スコア706
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。