【ツールの概要】
・Windowsの設定をまとめて出力するbat。
・ほかにもいいコマンドがあると思います、たぶん。(netコマンドとかやたら多いですし、powershellで出来ることも多い。)
・クライアントPCの保守などで流すと後で見るのに楽、かも。
・ローカルグループポリシーのコマンドは諸々の理由から採用してません。
(やり方は「グループポリシーをAD環境ではない他のPCへ適用する方法(MS TechNet)」とか参照するとよいです)
【環境(使っている環境)】
・Windows10Pro
※他のWindowsでも動くか→大抵は動くと思われる。powershell環境も要。(5.0以降、Windows10は標準で組込済。7zipとかで代替可能。)
【ソース(get_config.bat)】
SET Date_Tmp=%date:/=% SET tempfol=C:\temp\%Date_Tmp% If not exist %tempfol% ( mkdir %tempfol% ) SET logfile=%tempfol%\excfg.log SET IPcfg=%tempfol%\IPCfg.txt SET fwcfg=%tempfol%\Winfw.wfw SET fwrule=%tempfol%\Winfwrule.txt SET RegEx=%tempfol%\Regex.txt SET SysInfo=%tempfol%\SysInfo.txt SET Pinarp=%tempfol%\Pinarp.txt SET netqw=%tempfol%\netst_qw.txt SET netuser=%tempfol%\netuser.txt SET tasklist=%tempfol%\tasklist.txt SET msinfo=%tempfol%\msinfo.txt echo. echo 少々お待ちください。設定情報を出力中です。 echo 出力中 1/10 echo ======================== >%logfile% echo ipconfig >>%logfile% echo ======================== >>%logfile% echo %time% >%IPcfg% echo %COMPUTERNAME% >>%IPcfg% ipconfig /all >>%IPcfg% echo ipconfig出力完了 >>%logfile% echo. >>%logfile% echo 出力中 2/10 echo ======================== >>%logfile% echo ファイアウォール設定 >>%logfile% echo ======================== >>%logfile% netsh advfirewall export %fwcfg% echo ファイアウォール設定出力完了 >>%logfile% echo. >>%logfile% echo 出力中 3/10 echo ======================== >>%logfile% echo ファイアウォールルール一覧 >>%logfile% echo ======================== >>%logfile% netsh advfirewall firewall show rule name=all >%fwrule% echo ファイアウォールルール一覧出力完了 >>%logfile% echo. >>%logfile% echo 出力中 4/10 echo ======================== >>%logfile% echo レジストリ一覧 >>%logfile% echo ======================== >>%logfile% reg export HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy %RegEx% echo レジストリポリシーFW関係一覧出力完了 >>%logfile% echo. >>%logfile% echo 引き続き設定情報を出力中です。5/10 echo ======================== >>%logfile% echo systeminfo出力 >>%logfile% echo ======================== >>%logfile% systeminfo > %SysInfo% echo systeminfo出力完了 >>%logfile% echo. >>%logfile% echo. echo 出力中 6/10 echo 他端末へのネットワーク状況確認。 echo ======================== >>%logfile% echo ping出力 >>%logfile% echo ======================== >>%logfile% echo セグメントへのブロードキャストアドレスへ確認中。 ping 192.168.0.255 >>%Pinarp% arp -a >>%Pinarp% echo pingarp出力完了 >>%logfile% echo. >>%logfile% net view >>%Pinarp% echo.>>%logfile% echo 出力中 7/10 echo ======================== >>%logfile% echo ネットワーク確認 >>%logfile% echo ======================== >>%logfile% netstat -an >>%netqw% echo. >>%netqw% echo. >>%netqw% echo 「qwinsta.exe /server:localhost」の実行結果。「rdp-tcp」がリスニングセッションとしてあるか確認。 >>%netqw% qwinsta.exe /server:localhost >>%netqw% echo ネットワーク確認結果出力完了 >>%logfile% echo. >>%logfile% net share >>%netqw% echo.>>%logfile% echo 出力中 8/10 echo ======================== >>%logfile% echo アカウント確認 >>%logfile% echo ======================== >>%logfile% net user >>%netuser% query user>>%netuser% query session>>%netuser% net localgroup>>%netuser% REM ドメイン環境の場合は以下を有効化。 REM net group >>%netuser% echo アカウント確認結果出力完了 >>%logfile% echo.>>%logfile% echo 出力中 9/10 echo ======================== >>%logfile% echo タスクリスト >>%logfile% echo ======================== >>%logfile% tasklist >>%tasklist% tasklist /svc>>%tasklist% qprocess >>%tasklist% echo タスクリスト確認結果出力完了 >>%logfile% echo.>>%logfile% echo 出力中 10/10 キャンセルは押さずに少々お待ちください! echo ======================== >>%logfile% echo msinfo32出力 >>%logfile% echo ======================== >>%logfile% msinfo32 /report %msinfo% echo msinfo32出力完了 >>%logfile% echo.>>%logfile% echo ファイルを送信しています。 REM ファイル圧縮・共有フォルダへコピー REM 下記ではeveryone接続可能なパスへユーザ認証なしでドライブ割り当て cd /d %~dp0 powershell -Command "Compress-Archive -Path %tempfol% -DestinationPath C:\temp\%COMPUTERNAME%_%Date_Tmp%.zip" SET PATH_1=\\192.168.XXX.XXX\e$ SET DRIVE_LETTER_1=M SET DRIVE_LETTER_2=N If exist %DRIVE_LETTER_1%:\ ( echo %DRIVE_LETTER_1%:\ はすでに利用されています。 >>%LogFile% If exist %DRIVE_LETTER_2%:\ ( echo %DRIVE_LETTER_2%:\ もすでに利用されています。 >>%LogFile% echo 処理を中止します。使用可能なドライブを確認しスクリプトを修正してください。 >>%LogFile% goto End ) else ( net use %DRIVE_LETTER_2%: %PATH_1% SET TargetPath=%DRIVE_LETTER_2%:\設定ファイルパス\ ) ) else ( net use %DRIVE_LETTER_1%: %PATH_1% SET TargetPath=%DRIVE_LETTER_1%:\設定ファイルパス\ ) xcopy C:\temp\%COMPUTERNAME%_%Date_Tmp%.zip %TargetPath% /s /h /r /d /y REM 割り当て解除 If exist %DRIVE_LETTER_1%:\ ( net use %DRIVE_LETTER_1%: /delete /y echo 本動作は正常な動作です。 echo %time:~0,8% ライブ割当解除完了 %DRIVE_LETTER_1% >>%LogFile% ) If exist %DRIVE_LETTER_2%:\ ( net use %DRIVE_LETTER_2%: /delete /y echo 本動作は正常な動作です。 echo %time:~0,8% ドライブ割当解除完了 %DRIVE_LETTER_1% >>%LogFile% ) echo 何かキーを押すとフォルダを開き終了します。 pause > nul start %tempfol%
【使用方法】
・パスやフォルダ名などは環境に沿って書き換えて管理者実行します。
・systeminfoはmsinfo32と情報的に被ることが多いため、不要なら削除。
・設定を各種テキストファイルに出力後、powershellで圧縮し、ネットワークドライブをここでは2個までドライブ割り当てしようとします。
・メールで送ったり圧縮ファイルを置いとくだけならドライブ割り当て以下の行も不要です。
【説明】
・以下のコマンドをそれぞれのテキストファイルに出力します。
各コマンドの説明は実際に打つかMSのヘルプでも参照してください(え
ipconfig /all netsh advfirewall export ファイルパス netsh advfirewall firewall show rule name=all reg export HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy ファイルパス systeminfo arp -a (ブロードキャストアドレスへのping後) net view netstat -an qwinsta.exe /server:localhost net share tasklist tasklist /svc qprocess msinfo32 /report ファイルパス
・zip圧縮ファイルの名前は、[コンピュータ名]_[日付].zipとなるため、コンピュータ名が被ることが想定される場合は、他のユニークな名前をファイル名に設定するべきです。
・レジストリのエクスポートはいっそ全部とってもいいかもしれません。もしくはHKLMやHKCUを狙うとかもいいかも。
【総評】
管理人が入った会社の環境がワークグループ環境で()、端末配備時のキッティングなにそれという状況だったので、整理するため作ったbatです。
ワークグループ環境のため、ネットワーク設定をまず確認したかった意図がありました。(あとはリモートで覗ければなんとかなる、みたいな)
実際使用しているスクリプトでは、管理用IDやFWポリシー、リモデ設定とかもオプションで含んだりしてますね。
これらの設定ファイルをreadして設計書を作成できれば最高ですね。(白目)