忍者ブログ

◆当blogは、Linuxサーバ構築する際の実際の設定手順を個人的メモとして記載しております。LinuC試験の役に立つ情報があるかも…?

LinuC(Linux技術者認定資格)&リナックスサーバ構築設定事例

   
カテゴリー「Windows Script」の記事一覧

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【BAT】TTL呼び出しバッチ【改】

@echo off
REM ## ローカル変数開始 遅延環境変数
setlocal ENABLEDELAYEDEXPANSION
REM ==============================
REM ## 変数定義
REM ==============================
set COUNT=0
set MenuLINE=0
set SkipLINE=0
set Get_IP=
set RDP_User=
set RDP_Password=
set TERATERM_User=
set TERATERM_Password=
REM ## TTLファイル格納,INIファイル格納
set CURRENT_DIR=%CD%
set RDP_File=%CURRENT_DIR%\RDP_LOGON.ttl
set TTL_File=%CURRENT_DIR%\ServerLOGIN.ttl
set INI_File=%CURRENT_DIR%\TERATERM_2.INI
REM ## CSVファイル格納
set TargetFILE_01=%CURRENT_DIR%\RemoteDesktop.csv
set TargetFILE_02=%CURRENT_DIR%\SSHconnection.csv
REM ## TeraTermマクロのEXEファイル格納
REM ╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋
REM ╋↓ 環境に合わせてパスを設定 ↓╋
cd /d C:\Program Files (x86)\teraterm
REM ╋↑ 環境に合わせてパスを設定 ↑╋
REM ╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋
set Change_DIR=%CD%
set Macro_EXE=%Change_DIR%\ttpmacro.exe
REM ## カレントに戻る
cd /d %CURRENT_DIR%
REM ## 一時的に実行ファイルのパス追加
REM ## set path=%path%;%Macro_EXE%
color 17
REM ## パラメータ表示
echo -----------------------------
echo CURRENT  : %CURRENT_DIR% --- CURRENT Path
echo RDP File : %RDP_File% --- RDP File
echo TTL File : %TTL_File% --- TTL File
echo INI File : %INI_File% --- NII File
echo CSV File : %TargetFILE_01% --- RDP csv
echo CSV File : %TargetFILE_02% --- SSH csv
echo TeraTerm : %Change_DIR% --- TeraTerm Path
echo EXE File : %Macro_EXE% --- EXE File
echo -----------------------------
Timeout 1
pause
REM ★★★★★★★★★★★★★★★
REM ## メニュー表示
:MENU_START
cls
color 0f
REM ## 変数リセット
set COUNT=0
set SkipLINE=0
echo *****************************
echo 【メニュー】
echo *****************************
echo * MENU
echo *
echo *  【1】: リモートデスクトップ 接続
echo *  【2】: Tera Term 接続
echo *
echo * 【99】: 終了
echo *
echo *****************************
set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "
if ""%USR_INPUT_STR%""=="""" GOTO MENU_START
if %USR_INPUT_STR%==1 (goto MENU_START_01)
if %USR_INPUT_STR%==2 (goto MENU_START_02)
if %USR_INPUT_STR%==99 (goto MENU_END)
goto MENU_ERROR
REM ★★★★★★★★★★★★★★★
REM ## リモートデスクトップ接続
:MENU_START_01
cls
color f0
echo *****************************
echo 【リモートデスクトップ接続先】
echo *****************************
echo * RDP MENU
echo *
REM ───────────────
REM ## CSVファイル読み込み
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_01%) do (
  REM ## 行数
  set /a COUNT=!COUNT!+1
  REM ## RDP用メニュー表示
  echo * 【!COUNT!】 : %%a %%c 【ホスト名:%%b】  【ユーザ名:%%h】
)
REM ## メニュー行数セット
set /a MenuLINE=%COUNT%
REM ## 変数リセット
set COUNT=0
REM ───────────────
echo *  【0】 : メニューに戻る
echo * 【99】 : 終了
echo *
echo *****************************
set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "
if ""%USR_INPUT_STR%""=="""" GOTO MENU_START_01
if %USR_INPUT_STR%==0 (goto MENU_START)
if %USR_INPUT_STR%==99 (goto MENU_END)
REM ## メニューに無い数はエラー
if %USR_INPUT_STR% gtr %MenuLINE% (goto MENU_ERROR)
REM ───────────────
REM ## CSVファイル読み込み⇒対象抽出⇒関数処理
REM ## 入力値を変数にセット
set SkipLINE=%USR_INPUT_STR%
if %SkipLINE%==1 (
  for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_01%) do (
    set /a COUNT=!COUNT!+1
    set Get_IP=%%a
    set RDP_User=%%h
    set RDP_Password=%%i
    REM ## ループ終了
    goto forSkip1
  )
) else ( set /a SkipLINE=%SkipLINE%-1 )
)
REM ## echo %SkipLINE% LINE --- SKIP
REM ## 指定行数までスキップして読み込む
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=, skip=%SkipLINE%" %%a in (%TargetFILE_01%) do (
  set /a COUNT=!COUNT!+1
  set Get_IP=%%a
  set RDP_User=%%h
  set RDP_Password=%%i
  REM ## ループ終了
  goto forSkip1
)
REM ───────────────
REM ## 関数呼び出し
:forSkip1
echo ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
echo ┃ [ %USR_INPUT_STR% ]【 %Get_IP%:%RDP_User% 】
echo ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
pause
if not %COUNT%==0 (call :RDP %Get_IP% %RDP_User% %RDP_Password%)
REM ## 戻り値判定
if %errorlevel%==1 (goto MENU_START)
REM ───────────────
goto MENU_ERROR
REM ★★★★★★★★★★★★★★★
REM ## テラターム接続
:MENU_START_02
cls
color 0e
echo *****************************
echo 【TeraTerm接続先】
echo *****************************
echo * TERATERM MENU
echo *
REM ───────────────
REM ## CSVファイル読み込み
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_02%) do (
  REM ## 行数
  set /a COUNT=!COUNT!+1
  REM ## TeraTerm用メニュー表示
  echo * 【!COUNT!】 : %%a %%c 【ホスト名:%%b】  【ユーザ名:%%h】
)
REM ## メニュー行数セット
set /a MenuLINE=%COUNT%
REM ## 変数リセット
set COUNT=0
REM ───────────────
echo *  【0】 : メニューに戻る
echo * 【99】 : 終了
echo *
echo *****************************
set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "
if ""%USR_INPUT_STR%""=="""" GOTO MENU_START_02
if %USR_INPUT_STR%==0 (goto MENU_START)
if %USR_INPUT_STR%==99 (goto MENU_END)
REM ## メニューに無い数はエラー
if %USR_INPUT_STR% gtr %MenuLINE% (goto MENU_ERROR)
REM ───────────────
REM ## CSVファイル読み込み⇒対象抽出⇒関数処理
REM ## 入力値を変数にセット
set SkipLINE=%USR_INPUT_STR%
if %SkipLINE%==1 (
  for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_02%) do (
    set /a COUNT=!COUNT!+1
    set Get_IP=%%a
    set Get_VALUE=%%d
    set TERATERM_AUTH=%%f
    set TERATERM_User=%%h
    set TERATERM_Password=%%i
    REM ## ループ終了
    goto forSkip2
  )
) else ( set /a SkipLINE=%SkipLINE%-1 )
)
REM ## echo %SkipLINE% LINE --- SKIP
REM ## 指定行数までスキップして読み込む
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=, skip=%SkipLINE%" %%a in (%TargetFILE_02%) do (
  set /a COUNT=!COUNT!+1
  set Get_IP=%%a
  set Get_VALUE=%%d
  set TERATERM_AUTH=%%f
  set TERATERM_User=%%h
  set TERATERM_Password=%%i
  REM ## ループ終了
  goto forSkip2
)
REM ───────────────
REM ## 関数呼び出し
:forSkip2
echo ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
echo ┃ [ %USR_INPUT_STR% ]【 %Get_IP%:%TERATERM_User% 】
echo ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
pause
if not %COUNT%==0 (call :TERATERM %Get_IP% %TERATERM_User% %TERATERM_Password% %TERATERM_AUTH% %Get_VALUE%)
REM ## 戻り値判定
if %errorlevel%==1 (goto MENU_START)
REM ───────────────
goto MENU_ERROR
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 関数 RDP
:RDP
cls
color 8f
set xRDPxIP=%1
set xRDPxUSER=%2
set PS_Args=%3
echo 【ログイン先IPアドレス:%xRDPxIP%】【ユーザ名:%xRDPxUSER%】
echo 【対象ファイル:%PS_Args%】
REM ───────────────
REM ## リモートデスクトップ接続マクロ実行
cd /d %Change_DIR%
ttpmacro.exe %RDP_File% %xRDPxIP% %xRDPxUSER% %PS_Args%
REM ───────────────
REM ## 変数初期化、戻り値1をセットして戻る
set xRDPxIP=
set xRDPxUSER=
set PS_Args=
set PS_VALUE=
set xRDPxPASSWORD=
exit /b 1
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 関数 TERATERM
:TERATERM
cls
color 0f
set xLOGINxIP=%1
set xLOGINxUSER=%2
set PS_Args=%3
set xLOGINxAUTH=%4
set xLOGINxVALUE=%5
echo 【ログイン先IPアドレス:%xLOGINxIP%】【ユーザ名:%xLOGINxUSER%】
echo 【対象ファイル:%PS_Args%】【認証方式:%xLOGINxAUTH%】【値:%xLOGINxVALUE%】
REM ───────────────
REM ## TERATERM接続マクロ実行
cd /d %Change_DIR%
ttpmacro.exe %TTL_File% %xLOGINxIP% %xLOGINxUSER% %PS_Args% %INI_File% %xLOGINxAUTH% %xLOGINxVALUE%
REM ───────────────
REM ## 変数初期化、戻り値1をセットして戻る
set xLOGINxIP=
set xLOGINxUSER
set PS_Args=
set PS_VALUE=
set xLOGINxPASSWORD=
exit /b 1
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## エラー処理
:MENU_ERROR
cls
color 0c
echo *****************************
echo 入力エラー(メニューに戻ります)
echo *****************************
Timeout 2
goto MENU_START
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 終了処理
:MENU_END
cls
color 0a
echo *****************************
echo 【 終 了 】
echo *****************************
REM ## ローカル変数終了
endlocal
Timeout 2
exit
PR

【TTL】RDP接続の例

━━━━━━━━━━━━━━━━━━━
① 「パスワード暗号化ファイル作成.ttl」を用意する
 ⇒記載内容は以下参照
        ;; *********************************
        ENCRYPT = 'PW.dat'                    ;; 対象ファイル名を指定
        IDENT_User = 'Administrator'       ;; ユーザ名などを指定
        PASS_WORD = '!P@ssw0rd'       ;; 対象のパスワードを指定
        setpassword ENCRYPT IDENT_User PASS_WORD        ;; 暗号化ファイル出力
        ;; *********************************
━━━━━━━━━━━━━━━━━━━
② 「RDP_LOGON.ttl」でパスワードを復号化してリモートデスクトップ接続する
 ⇒記載内容は以下参照
timeout=10
;; ***************************
;; 接続先IPアドレス、ユーザー名、パスワードの引数を格納する
;; ***************************
ParamIP = Params[2]
ParamUSER = Params[3]
ParamPASSWORD = Params[4]
DECRYPT = ''
;; ***************************
;; 復号化した文字列の取得
;; ***************************
getpassword ParamPASSWORD ParamUSER DECRYPT
;; ***************************
;; 資格情報の作成
;; ***************************
sprintf2 KEYINFO "cmdkey /generic:TERMSRV/%s /user:%s /pass:%s" ParamIP ParamUSER DECRYPT
exec KEYINFO
;; ***************************
;; 環境変数にMSTSC格納
;; ***************************
RDPPATH = "%windir%\system32\mstsc.exe"
expandenv RDPPATH
;; ***************************
;; リモートデスクトップ接続コマンド実行
;; ***************************
sprintf2 EXEPATH "%s /v:%s" RDPPATH ParamIP
exec EXEPATH
;; ***************************
;; 待機時間
;; ***************************
statusbox DECRYPT '【パスワード】'
pause 20
;; ***************************
;; 資格情報の削除
;; ***************************
sprintf2 KEYINFO "cmdkey /delete:TERMSRV/%s" ParamIP
exec KEYINFO
━━━━━━━━━━━━━━━━━━━
③ バッチから呼び出す ⇒ 以下は記述例として一部抜粋
====================================
 cd /d %Change_DIR%
 ttpmacro.exe %RDP_File% %xRDPxIP% %xRDPxUSER% %PS_Args%
====================================
 ※全体の記述例は以下参照
━━━━━━━━━━━━━━━━━━━

【BAT】TTL呼出しバッチ

@echo off
REM ## ローカル変数開始 遅延環境変数
setlocal ENABLEDELAYEDEXPANSION
REM ==============================
REM ## 変数定義
REM ==============================
set COUNT=0
set MenuLINE=0
set SkipLINE=0
set Get_IP=
set RDP_User=
set RDP_Password=
set TERATERM_User=
set TERATERM_Password=
REM ## TTLファイル格納,INIファイル格納
set CURRENT_DIR=%CD%
set RDP_File=%CURRENT_DIR%\RDP_LOGON.ttl
set TTL_File=%CURRENT_DIR%\ServerLOGIN.ttl
set INI_File=%CURRENT_DIR%\TERATERM_2.INI
REM ## CSVファイル格納
set TargetFILE_01=%CURRENT_DIR%\RemoteDesktop.csv
set TargetFILE_02=%CURRENT_DIR%\SSHconnection.csv
REM ## TeraTermマクロのEXEファイル格納
cd /d C:\Program Files (x86)\teraterm
REM ## cd /d D:\Program Files (x86)\teraterm
REM ## cd /d E:\Program Files (x86)\teraterm
set Change_DIR=%CD%
set Macro_EXE=%Change_DIR%\ttpmacro.exe
REM ## カレントに戻る
cd /d %CURRENT_DIR%
REM ## 一時的に実行ファイルのパス追加
REM ## set path=%path%;%Macro_EXE%
color 17
REM ## パラメータ表示
echo -----------------------------
echo CURRENT  : %CURRENT_DIR% --- CURRENT Path
echo RDP File : %RDP_File% --- RDP File
echo TTL File : %TTL_File% --- TTL File
echo INI File : %INI_File% --- NII File
echo CSV File : %TargetFILE_01% --- RDP csv
echo CSV File : %TargetFILE_02% --- SSH csv
echo TeraTerm : %Change_DIR% --- TeraTerm Path
echo EXE File : %Macro_EXE% --- EXE File
echo -----------------------------
Timeout 1
pause
REM ★★★★★★★★★★★★★★★
REM ## メニュー表示
:MENU_START
cls
color 0f
REM ## 変数リセット
set COUNT=0
set SkipLINE=0
echo *****************************
echo 【メニュー】
echo *****************************
echo * MENU
echo *
echo *  【1】: リモートデスクトップ 接続
echo *  【2】: Tera Term 接続
echo *
echo * 【99】: 終了
echo *
echo *****************************
set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "
if ""%USR_INPUT_STR%""=="""" GOTO MENU_START
if %USR_INPUT_STR%==1 (goto MENU_START_01)
if %USR_INPUT_STR%==2 (goto MENU_START_02)
if %USR_INPUT_STR%==99 (goto MENU_END)
goto MENU_ERROR
REM ★★★★★★★★★★★★★★★
REM ## リモートデスクトップ接続
:MENU_START_01
cls
color f0
echo *****************************
echo 【リモートデスクトップ接続先】
echo *****************************
echo * RDP MENU
echo *
REM ───────────────
REM ## CSVファイル読み込み
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_01%) do (
  REM ## 行数
  set /a COUNT=!COUNT!+1
  REM ## RDP用メニュー表示
  echo * 【!COUNT!】 : %%a %%c 【ホスト名:%%b】  【ユーザ名:%%h】
)
REM ## メニュー行数セット
set /a MenuLINE=%COUNT%
REM ## 変数リセット
set COUNT=0
REM ───────────────
echo *  【0】 : メニューに戻る
echo * 【99】 : 終了
echo *
echo *****************************
set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "
if ""%USR_INPUT_STR%""=="""" GOTO MENU_START_01
if %USR_INPUT_STR%==0 (goto MENU_START)
if %USR_INPUT_STR%==99 (goto MENU_END)
REM ## メニューに無い数はエラー
if %USR_INPUT_STR% gtr %MenuLINE% (goto MENU_ERROR)
REM ───────────────
REM ## CSVファイル読み込み⇒対象抽出⇒関数処理
REM ## 入力値を変数にセット
set SkipLINE=%USR_INPUT_STR%
if %SkipLINE%==1 (
  for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_01%) do (
    set /a COUNT=!COUNT!+1
    set Get_IP=%%a
    set RDP_User=%%h
    set RDP_Password=%%i
    REM ## ループ終了
    goto forSkip1
  )
) else ( set /a SkipLINE=%SkipLINE%-1 )
)
REM ## echo %SkipLINE% LINE --- SKIP
REM ## 指定行数までスキップして読み込む
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=, skip=%SkipLINE%" %%a in (%TargetFILE_01%) do (
  set /a COUNT=!COUNT!+1
  set Get_IP=%%a
  set RDP_User=%%h
  set RDP_Password=%%i
  REM ## ループ終了
  goto forSkip1
)
REM ───────────────
REM ## 関数呼び出し
:forSkip1
echo --- %USR_INPUT_STR% --- %Get_IP% %RDP_User%
pause
if not %COUNT%==0 (call :RDP %Get_IP% %RDP_User% %RDP_Password%)
REM ## 戻り値判定
if %errorlevel%==1 (goto MENU_START)
REM ───────────────
goto MENU_ERROR
REM ★★★★★★★★★★★★★★★
REM ## テラターム接続
:MENU_START_02
cls
color 0e
echo *****************************
echo 【TeraTerm接続先】
echo *****************************
echo * TERATERM MENU
echo *
REM ───────────────
REM ## CSVファイル読み込み
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_02%) do (
  REM ## 行数
  set /a COUNT=!COUNT!+1
  REM ## TeraTerm用メニュー表示
  echo * 【!COUNT!】 : %%a %%c 【ホスト名:%%b】  【ユーザ名:%%h】
)
REM ## メニュー行数セット
set /a MenuLINE=%COUNT%
REM ## 変数リセット
set COUNT=0
REM ───────────────
echo *  【0】 : メニューに戻る
echo * 【99】 : 終了
echo *
echo *****************************
set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "
if ""%USR_INPUT_STR%""=="""" GOTO MENU_START_02
if %USR_INPUT_STR%==0 (goto MENU_START)
if %USR_INPUT_STR%==99 (goto MENU_END)
REM ## メニューに無い数はエラー
if %USR_INPUT_STR% gtr %MenuLINE% (goto MENU_ERROR)
REM ───────────────
REM ## CSVファイル読み込み⇒対象抽出⇒関数処理
REM ## 入力値を変数にセット
set SkipLINE=%USR_INPUT_STR%
if %SkipLINE%==1 (
  for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_02%) do (
    set /a COUNT=!COUNT!+1
    set Get_IP=%%a
    set TERATERM_User=%%h
    set TERATERM_Password=%%i
    REM ## ループ終了
    goto forSkip2
  )
) else ( set /a SkipLINE=%SkipLINE%-1 )
)
REM ## echo %SkipLINE% LINE --- SKIP
REM ## 指定行数までスキップして読み込む
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=, skip=%SkipLINE%" %%a in (%TargetFILE_02%) do (
  set /a COUNT=!COUNT!+1
  set Get_IP=%%a
  set TERATERM_User=%%h
  set TERATERM_Password=%%i
  REM ## ループ終了
  goto forSkip2
)
REM ───────────────
REM ## 関数呼び出し
:forSkip2
echo --- %USR_INPUT_STR% --- %Get_IP% %TERATERM_User%
pause
if not %COUNT%==0 (call :TERATERM %Get_IP% %TERATERM_User% %TERATERM_Password%)
REM ## 戻り値判定
if %errorlevel%==1 (goto MENU_START)
REM ───────────────
goto MENU_ERROR
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 関数 RDP
:RDP
cls
color 8f
set xRDPxIP=%1
set xRDPxUSER=%2
set PS_Args=%3
echo 【ログイン先IPアドレス:%xRDPxIP%】【ユーザ名:%xRDPxUSER%】
echo 【対象ファイル:%PS_Args%】
REM ───────────────
REM ## リモートデスクトップ接続マクロ実行
cd /d %Change_DIR%
ttpmacro.exe %RDP_File% %xRDPxIP% %xRDPxUSER% %PS_Args%
REM ───────────────
REM ## 変数初期化、戻り値1をセットして戻る
set xRDPxIP=
set xRDPxUSER=
set PS_Args=
set PS_VALUE=
set xRDPxPASSWORD=
exit /b 1
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 関数 TERATERM
:TERATERM
cls
color 0f
set xLOGINxIP=%1
set xLOGINxUSER=%2
set PS_Args=%3
echo 【ログイン先IPアドレス:%xLOGINxIP%】【ユーザ名:%xLOGINxUSER%】
echo 【対象ファイル:%PS_Args%】
REM ───────────────
REM ## TERATERM接続マクロ実行
cd /d %Change_DIR%
ttpmacro.exe %TTL_File% %xLOGINxIP% %xLOGINxUSER% %PS_Args% %INI_File%
REM ───────────────
REM ## 変数初期化、戻り値1をセットして戻る
set xLOGINxIP=
set xLOGINxUSER
set PS_Args=
set PS_VALUE=
set xLOGINxPASSWORD=
exit /b 1
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## エラー処理
:MENU_ERROR
cls
color 0c
echo *****************************
echo 入力エラー(メニューに戻ります)
echo *****************************
Timeout 2
goto MENU_START
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 終了処理
:MENU_END
cls
color 0a
echo *****************************
echo 【 終 了 】
echo *****************************
REM ## ローカル変数終了
endlocal
Timeout 2
exit

【BAT】暗号化と複合化

①で予め暗号化したファイルを作成しておく、③のバッチから②のPowerShellを呼び出して複合化する場合の例

①【暗号化パスワードのファイル作成コマンド】
PowerShell -command "[byte[]] $Enc_KEY = (3,4,2,3,56,34,254,222,1,1,2,23,42,54,33,233,1,34,2,7,6,5,35,43);$Cred = Get-Credential;$Cred.Password | ConvertFrom-SecureString -key $Enc_KEY | Set-Content .\Password.dat"

②## 【複合化パワーシェル(関数)】
## AES用バイト配列
[byte[]] $Enc_KEY = (3,4,2,3,56,34,254,222,1,1,2,23,42,54,33,233,1,34,2,7,6,5,35,43)
 
## 暗号化されたパスワードを複合化する
$Get_Param = Get-Content $Args[0] | ConvertTo-SecureString -key $Enc_KEY
$SSTstr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Get_Param)
$PTSstr  = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($SSTstr)
$Return_Param = $PTSstr
 
## 戻り値を返す
return $Return_Param

③【バッチからパワーシェルを呼び出して結果を取得する】
@echo off
 
set PS_Args=Password.dat
 
REM ## echo パラメータ %PS_Args%
 
REM ## パスワードを取得する
FOR /F "usebackq" %%p IN (`powershell -executionpolicy bypass -File PW_File.ps1 %PS_Args%`) DO SET PS_VALUE=%%p
 
echo 複合化したパスワード = %PS_VALUE%
 
pause

【BAT】ログイン用バッチ

@echo off
REM ## ローカル変数開始 遅延環境変数
setlocal ENABLEDELAYEDEXPANSION
REM ==============================
REM ## 変数定義
REM ==============================
set COUNT=0
set MenuLINE=0
set SkipLINE=0
set Get_IP=
set RDP_User=
set RDP_Password=
set TERATERM_User=
set TERATERM_Password=
REM ## TTLファイル格納,INIファイル格納
set CURRENT_DIR=%CD%
set TTL_File=%CURRENT_DIR%\ServerLOGIN.ttl
set INI_File=%CURRENT_DIR%\TERATERM_2.INI
REM ## CSVファイル格納
set TargetFILE_01=%CURRENT_DIR%\RemoteDesktop.csv
set TargetFILE_02=%CURRENT_DIR%\SSHconnection.csv
REM ## TeraTermマクロのEXEファイル格納
cd /d C:\Program Files (x86)\teraterm
REM ## cd /d D:\Program Files (x86)\teraterm
REM ## cd /d E:\Program Files (x86)\teraterm
set Change_DIR=%CD%
set Macro_EXE=%Change_DIR%\ttpmacro.exe
REM ## カレントに戻る
cd /d %CURRENT_DIR%
REM ## 一時的に実行ファイルのパス追加
REM ## set path=%path%;%Macro_EXE%
color 17
REM ## パラメータ表示
echo -----------------------------
echo CURRENT  : %CURRENT_DIR% --- CURRENT Path
echo TTL File : %TTL_File% --- TTL File
echo INI File : %INI_File% --- NII File
echo CSV File : %TargetFILE_01% --- RDP csv
echo CSV File : %TargetFILE_02% --- SSH csv
echo TeraTerm : %Change_DIR% --- TeraTerm Path
echo EXE File : %Macro_EXE% --- EXE File
echo -----------------------------
Timeout 1
REM ## pause
REM ★★★★★★★★★★★★★★★
REM ## メニュー表示
:MENU_START
cls
color 0f
REM ## 変数リセット
set COUNT=0
set SkipLINE=0
echo *****************************
echo 【メニュー】
echo *****************************
echo * MENU
echo *
echo *  1: リモートデスクトップ 接続
echo *  2: Tera Term 接続
echo *
echo * 99: 終了
echo *
echo *****************************
set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "
if ""%USR_INPUT_STR%""=="""" GOTO MENU_START
if %USR_INPUT_STR%==1 (goto MENU_START_01)
if %USR_INPUT_STR%==2 (goto MENU_START_02)
if %USR_INPUT_STR%==99 (goto MENU_END)
goto MENU_ERROR
REM ★★★★★★★★★★★★★★★
REM ## リモートデスクトップ接続
:MENU_START_01
cls
color f0
echo *****************************
echo 【リモートデスクトップ接続先】
echo *****************************
echo * RDP MENU
echo *
REM ───────────────
REM ## CSVファイル読み込み
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_01%) do (
  REM ## 行数
  set /a COUNT=!COUNT!+1
  REM ## RDP用メニュー表示
  echo * !COUNT! : %%a 【ホスト名:%%b】 %%c 【ユーザ名:%%e】
)
REM ## メニュー行数セット
set /a MenuLINE=%COUNT%
REM ## 変数リセット
set COUNT=0
REM ───────────────
echo *  0 : メニューに戻る
echo * 99 : 終了
echo *
echo *****************************
set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "
if ""%USR_INPUT_STR%""=="""" GOTO MENU_START_01
if %USR_INPUT_STR%==0 (goto MENU_START)
if %USR_INPUT_STR%==99 (goto MENU_END)
REM ## メニューに無い数はエラー
if %USR_INPUT_STR% gtr %MenuLINE% (goto MENU_ERROR)
REM ───────────────
REM ## CSVファイル読み込み⇒対象抽出⇒関数処理
REM ## 入力値を変数にセット
set SkipLINE=%USR_INPUT_STR%
if %SkipLINE%==1 (
  for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_01%) do (
    set /a COUNT=!COUNT!+1
    set Get_IP=%%a
    set RDP_User=%%e
    set RDP_Password=%%i
    REM ## ループ終了
    goto forSkip1
  )
) else ( set /a SkipLINE=%SkipLINE%-1 )
)
REM ## echo %SkipLINE% LINE --- SKIP
REM ## 指定行数までスキップして読み込む
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=, skip=%SkipLINE%" %%a in (%TargetFILE_01%) do (
  set /a COUNT=!COUNT!+1
  set Get_IP=%%a
  set RDP_User=%%e
  set RDP_Password=%%i
  REM ## ループ終了
  goto forSkip1
)
REM ───────────────
REM ## 関数呼び出し
:forSkip1
echo --- %USR_INPUT_STR% --- %Get_IP% %RDP_User%
pause
if not %COUNT%==0 (call :RDP %Get_IP% %RDP_User% %RDP_Password%)
REM ## 戻り値判定
if %errorlevel%==1 (goto MENU_START)
REM ───────────────
goto MENU_ERROR
REM ★★★★★★★★★★★★★★★
REM ## テラターム接続
:MENU_START_02
cls
color 0e
echo *****************************
echo 【TeraTerm接続先】
echo *****************************
echo * TERATERM MENU
echo *
REM ───────────────
REM ## CSVファイル読み込み
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_02%) do (
  REM ## 行数
  set /a COUNT=!COUNT!+1
  REM ## TeraTerm用メニュー表示
  echo * !COUNT! : %%a 【ホスト名:%%b】 %%c 【ユーザ名:%%e】
)
REM ## メニュー行数セット
set /a MenuLINE=%COUNT%
REM ## 変数リセット
set COUNT=0
REM ───────────────
echo *  0 : メニューに戻る
echo * 99 : 終了
echo *
echo *****************************
set USR_INPUT_STR=
set /P USR_INPUT_STR="番号を入力してください: "
if ""%USR_INPUT_STR%""=="""" GOTO MENU_START_02
if %USR_INPUT_STR%==0 (goto MENU_START)
if %USR_INPUT_STR%==99 (goto MENU_END)
REM ## メニューに無い数はエラー
if %USR_INPUT_STR% gtr %MenuLINE% (goto MENU_ERROR)
REM ───────────────
REM ## CSVファイル読み込み⇒対象抽出⇒関数処理
REM ## 入力値を変数にセット
set SkipLINE=%USR_INPUT_STR%
if %SkipLINE%==1 (
  for /f "tokens=1,2,3,4,5,6,7,8,9 delims=," %%a in (%TargetFILE_02%) do (
    set /a COUNT=!COUNT!+1
    set Get_IP=%%a
    set TERATERM_User=%%e
    set TERATERM_Password=%%i
    REM ## ループ終了
    goto forSkip2
  )
) else ( set /a SkipLINE=%SkipLINE%-1 )
)
REM ## echo %SkipLINE% LINE --- SKIP
REM ## 指定行数までスキップして読み込む
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=, skip=%SkipLINE%" %%a in (%TargetFILE_02%) do (
  set /a COUNT=!COUNT!+1
  set Get_IP=%%a
  set TERATERM_User=%%e
  set TERATERM_Password=%%i
  REM ## ループ終了
  goto forSkip2
)
REM ───────────────
REM ## 関数呼び出し
:forSkip2
echo --- %USR_INPUT_STR% --- %Get_IP% %TERATERM_User%
pause
if not %COUNT%==0 (call :TERATERM %Get_IP% %TERATERM_User% %TERATERM_Password%)
REM ## 戻り値判定
if %errorlevel%==1 (goto MENU_START)
REM ───────────────
goto MENU_ERROR
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 関数 RDP
:RDP
cls
color 8f
set xRDPxIP=%1
set xRDPxUSER=%2
set PS_Args=%3
echo 【ログイン先IPアドレス:%xRDPxIP%】【ユーザ名:%xRDPxUSER%】
echo 【対象ファイル:%PS_Args%】
REM ───────────────
REM ## パスワードを複合化して抽出する
FOR /F "usebackq" %%p IN (`powershell -executionpolicy bypass -File PW_File.ps1 %PS_Args%`) DO SET PS_VALUE=%%p
set xRDPxPASSWORD=%PS_VALUE%
REM ───────────────
REM ## RDPコマンド実行
Cmdkey /generic:TERMSRV/%xRDPxIP% /user:%xRDPxUSER% /pass:%xRDPxPASSWORD%
Start mstsc /v:%xRDPxIP%
Timeout 5
Cmdkey /delete:TERMSRV/%xRDPxIP%
REM ───────────────
REM ## 変数初期化、戻り値1をセットして戻る
set xRDPxIP=
set xRDPxUSER=
set PS_Args=
set PS_VALUE=
set xRDPxPASSWORD=
exit /b 1
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 関数 TERATERM
:TERATERM
cls
color 0f
set xLOGINxIP=%1
set xLOGINxUSER=%2
set PS_Args=%3
echo 【ログイン先IPアドレス:%xLOGINxIP%】【ユーザ名:%xLOGINxUSER%】
echo 【対象ファイル:%PS_Args%】
REM ───────────────
REM ## パスワードを複合化して抽出する
FOR /F "usebackq" %%p IN (`powershell -executionpolicy bypass -File PW_File.ps1 %PS_Args%`) DO SET PS_VALUE=%%p
set xLOGINxPASSWORD=%PS_VALUE%
REM ───────────────
REM ## TERATERM接続マクロ実行
cd /d %Change_DIR%
ttpmacro.exe %TTL_File% %xLOGINxIP% %xLOGINxUSER% %xLOGINxPASSWORD% %INI_File%
REM ───────────────
REM ## 変数初期化、戻り値1をセットして戻る
set xLOGINxIP=
set xLOGINxUSER
set PS_Args=
set PS_VALUE=
set xLOGINxPASSWORD=
exit /b 1
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## エラー処理
:MENU_ERROR
cls
color 0c
echo *****************************
echo 入力エラー(メニューに戻ります)
echo *****************************
Timeout 2
goto MENU_START
REM ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ## 終了処理
:MENU_END
cls
color 0a
echo *****************************
echo 【 終 了 】
echo *****************************
REM ## ローカル変数終了
endlocal
Timeout 2
exit
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
TeraTermマクロは以下を参照
https://archives.blog-mmo.com/Entry/84/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
暗号化と複合化は以下を参照
https://archives.blog-mmo.com/Entry/86/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

【TTL】バッチ連携用

timeout=10
;; ■接続先IPアドレス
paramIP = params[2]
;; ■ユーザー名
paramUSER = params[3]
;; ■パスワード
paramPASSWORD = params[4]
;; ■INIファイル
paramINI = params[5]
;; ## INIファイルを直接読ませる場合
;; getdir DIR
;; paramINI = DIR
;; strconcat paramINI '\TERATERM_2.INI'
;; ## SSH接続コマンド組み立て
LoginSSH = paramIP
;; ## パスワード認証
;; strconcat LoginSSH ':22 /ssh /auth=password /user='
;; ## キーボードインタラクティブ認証
;; strconcat LoginSSH ':22 /ssh /auth=challenge /user='
;; ## パスワード認証
strconcat LoginSSH ':22 /ssh /auth=password /user='
strconcat LoginSSH paramUSER
strconcat LoginSSH ' /passwd='
strconcat LoginSSH paramPASSWORD
;; ## INIファイルを指定
strconcat LoginSSH ' /F='
strconcat LoginSSH paramINI
;; ## SSH接続
connect LoginSSH
if result <> 2 then
    messagebox '接続エラー' '【connection err】'
    end
endif
wait '$' '#'
sendln 'uname -n'
sendln 'echo ##################### 'paramIP' ##################### '
sendln 'ip a | grep 'paramIP
sendln 'whoami'
sendln 'date'
statusbox '1秒後にマクロ終了します' '【マクロ終了】'
pause 1
;; messagebox 'マクロを終了します' '【マクロ終了】'
end

【BAT】PING疎通バッチ

【使い方】
 対象のIPアドレス(又はホスト名)を「IP.txt」に列挙し、
 「PING_疎通確認.bat」にドラッグ&ドロップして実行する。
  ⇒ 実行結果は「PING_IP.txt」に出力される。

※テキストファイル名⇒「<任意>.txt」
%COMPUTERNAME%
localhost
127.0.0.1
8.8.8.8
1.1.1.1
※バッチファイル名⇒「PING_疎通確認.bat
@echo off
://開始処理//
type nul > PING_IP.txt
echo. >> PING_IP.txt
echo ****************************** >> PING_IP.txt
echo 【年月日/時刻】%date:~0,10% %time:~0,5% >> PING_IP.txt
REM # echo ------------------------------ >> PING_IP.txt
REM # date /t >> PING_IP.txt 2>&1
REM # echo ------------------------------ >> PING_IP.txt
REM # time /t >> PING_IP.txt 2>&1
echo ****************************** >> PING_IP.txt
echo ------------------------------
echo *** START ***
echo ------------------------------
:*** *** *** *** ***
:*** メイン処理  ***
:*** *** *** *** ***
://読込処理//
for /f %%a in (%1) do (
 Call :xxxPINGxxx %%a
)
://終了処理//
echo.
echo ------------------------------
echo *** END ***
echo ------------------------------
pause
Exit
:*** *** *** *** ***
:*** PING実行処理***
:*** *** *** *** ***
:xxxPINGxxx
@echo on
ping -n 1 %*
@echo off
echo.
echo. >> PING_IP.txt
echo ============================== >> PING_IP.txt
echo.
echo ■疎通対象のIPアドレス■ %* >> PING_IP.txt
echo (コマンド)ping -n 3 %* >> PING_IP.txt 2>&1
echo.
echo ============================== >> PING_IP.txt
ping -n 3 %* >> PING_IP.txt
echo. >> PING_IP.txt
echo ++++++++++++++++++++++++++++++ >> PING_IP.txt
echo. >> PING_IP.txt
Exit /b 0

【BAT】環境変数の遅延展開

【環境変数の遅延展開】
 バッチファイルで変数の値が代入されるのは1行読み込んだタイミングとなる。
 この場合、if文やfor文では変数が扱いが難しくなってしまう。
 これを回避する為、変数の値が代入されるのを実行時のタイミングに変更する。

【書式】

 ① setlocal enabledelayedexpansion ←これを最初に記述
 ② 変数の囲みを「変数」⇒「変数」に変える

【例】

@echo off
setlocal enabledelayedexpansion
set A=0
if %A% == 0 (
    set A=1
    echo !A!
)

【BAT】Windows_作業用

【使い方】以下をコピーして、コマンドプロンプトに貼り付け実行する

@echo off

 :┏━━━━━━━━━━━━━━━━━━━
 :┃【フォルダを作って移動する】

 :┗━━━━━━━━━━━━━━━━━━━
mkdir %COMPUTERNAME%
cd %COMPUTERNAME%

 :┏━━━━━━━━━━━━━━━━━━━

 :┃【サーバーの役割と機能】
 :┃(管理者として実行)
 :┗━━━━━━━━━━━━━━━━━━━
dism /Online /Get-Features > Features.txt

 :┏━━━━━━━━━━━━━━━━━━━

 :┃【ドライブ情報】
 :┗━━━━━━━━━━━━━━━━━━━
icacls c:\ > icacls.txt
icacls d:\ >> icacls.txt

 :┏━━━━━━━━━━━━━━━━━━━

 :┃【PowerShell起動】
 :┗━━━━━━━━━━━━━━━━━━━
powershell

 :┏━━━━━━━━━━━━━━━━━━━

 :┃【ドライブ情報】
 :┗━━━━━━━━━━━━━━━━━━━
Get-PSDrive > ${env:COMUPUTERNAME}_Drive.txt

 :┏━━━━━━━━━━━━━━━━━━━

 :┃【サーバーの役割と機能】
 :┗━━━━━━━━━━━━━━━━━━━
Get-WindowsFeature > ${env:COMPUTERNAME}_WindowsFeature.txt

 :┏━━━━━━━━━━━━━━━━━━━

 :┃【ディレクトリの内容】
 :┗━━━━━━━━━━━━━━━━━━━
dir -Directory -Recurse | Select FullName > ${env:COMPUTERNAME}_Dir.txt

 :┏━━━━━━━━━━━━━━━━━━━

 :┃【PowerShell終了】
 :┗━━━━━━━━━━━━━━━━━━━
exit

【BAT】Windowsの設定画面を表示する

【使い方】以下のバッチファイルを適当なフォルダに格納して実行する


「設定画面の表示.bat」 ← バッチファイル名


@echo off

::★★★設定画面の表示★★★
echo .
echo ===============
echo 【*S*T*A*R*T*】
echo ===============
echo .
timeout 1 >nul && color 1e
echo ┏━━━━━━━━━━━━━━━
echo ┃【システムのプロパティ】
echo ┗━━━━━━━━━━━━━━━
sysdm.cpl
echo ┏━━━━━━━━━━━━━━━
echo ┃【スクリーンセーバーの設定】
echo ┗━━━━━━━━━━━━━━━
control desk.cpl,screensaver,@screensaver
echo ┏━━━━━━━━━━━━━━━
echo ┃【ネットワーク接続】
echo ┗━━━━━━━━━━━━━━━
ncpa.cpl
echo ┏━━━━━━━━━━━━━━━
echo ┃【ファイアウォール】
echo ┗━━━━━━━━━━━━━━━
firewall.cpl
echo ┏━━━━━━━━━━━━━━━
echo ┃【UACの設定】
echo ┗━━━━━━━━━━━━━━━
UserAccountControlSettings
echo ┏━━━━━━━━━━━━━━━
echo ┃【ローカルユーザーとグループ】
echo ┗━━━━━━━━━━━━━━━
lusrmgr.msc
echo ┏━━━━━━━━━━━━━━━
echo ┃【ディスプレイ】
echo ┗━━━━━━━━━━━━━━━
desk.cpl

timeout 1 >nul && color 0f
echo .
echo ===============
echo 【**E**N**D**】
echo ===============
echo .
pause

更新日付

05 2025/06 07
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

RECOMMEND

プロフィール

HN:
Account
HP:
性別:
非公開
職業:
--- NODATA ---
趣味:
--- NODATA ---
自己紹介:
◆当blogは、Linuxサーバ構築する際の実際の設定手順を個人的メモとして記載しております。LinuC試験の役に立つ情報があるかも…?

リンク

<<前のページ  | HOME |  次のページ>>
Copyright ©  -- LinuC(Linux技術者認定資格)&リナックスサーバ構築設定事例 --  All Rights Reserved
Design by CriCri / Photo by Melonenmann / powered by NINJA TOOLS / 忍者ブログ / [PR]