質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

2回答

7598閲覧

レジストリやグループポリシーなどの設定を一気にチェックしたい

TSho

総合スコア21

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

0クリップ

投稿2018/10/09 15:19

前提・実現したいこと

現在設定しているレジストリやグループポリシーなどの値が、自分の指定した値になっているかどうか一気にチェックしたいです。

以下の手順によって行おうと考えています。

◆手順

  1. レジストリの値をテキストファイルに書き出す
  2. 書き出されたテキストファイルと、自分の用意していた値の一覧をエクセルに並べ、EXACT関数で比べる

発生している問題・エラーメッセージ

レジストリの値をファイルに出力する方法がわかりません。

試したこと

レジストリ ファイル出力 などでググる >エクスポートのやり方ばかり出てきてしまう

補足情報(FW/ツールのバージョンなど)

やり方は問いませんが、とにかく早く解決でき、今後のキッティング作業などにも生かせる方法を勉強したいです。
大変初歩的な質問で申し訳ございませんが、知恵を貸していただけると幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

kamikazelight

総合スコア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

gitya107

総合スコア706

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問