[Windows/PowerShell/ExPack] PowerShell で複数サーバーの複数アカウントに連続してログオンしたい.
技術ノート
2016/12/14
[番号]
技術ノート KGTN 2016120601
[現象]
[Windows/PowerShell/ExPack] PowerShell で複数サーバーの複数アカウントに連続してログオンしたい.
[説明]
ローカルアカウントで Windows PowerShell を 「管理者として実行する」 で起動し,その中で下記のコマンドを実行して下さい.
# # GG サーバーに連続ログオンするバッチを生成するスクリプト # # 設定情報 $FilePrefix = "Gen\RDSrdsLogon" # 生成するファイルのプリフィックス # ホスト情報およびユーザー情報の設定など Try { . (".\Conf\confHostList.ps1") . (".\Conf\confUserList.ps1") } Catch { Write-Host "インクルードファイルが見つかりません。" Exit 1001 } # 引数のチェック if($Args.Length -ne 0) { Write-Host "Usage: genRDSLogonList.ps1" Exit 1002 } # 既存ファイルの削除 ForEach($targetH In $hostList) { if ((Test-Path "$FilePrefix-$targetH.bat") -eq $True) { Remove-Item ("$FilePrefix-$targetH.bat") } } # RDS へのログオンバッチの生成(サーバー単位) $ii = 0 ForEach($targetU In $userList) { ++$ii $jj = 0 ForEach($targetH In $hostList) { # 各サーバーでコマンドを実行 # cmdkey /generic:TERMSRV/%HOST% /user:%USER% /pass:%PASS% >NUL $OutMessage = "cmdkey /generic:TERMSRV/{0} /user:{1} /pass:{2} >NUL" -f $targetH,$targetU[0],$targetU[1] write-output $OutMessage | out-file -filepath ("$FilePrefix-$targetH.bat") -encoding default -append # mstsc /v:%HOST% >NUL $OutMessage = "mstsc /v:{0} >NUL" -f $targetH write-output $OutMessage | out-file -filepath ("$FilePrefix-$targetH.bat") -encoding default -append # cmdkey /delete:TERMSRV/%HOST% >NUL $OutMessage = "cmdkey /delete:TERMSRV/{0} >NUL" -f $targetH write-output $OutMessage | out-file -filepath ("$FilePrefix-$targetH.bat") -encoding default -append # cmdkey /delete:TERMSRV/%HOST% >NUL $OutMessage = "::" write-output $OutMessage | out-file -filepath ("$FilePrefix-$targetH.bat") -encoding default -append #--- ++$jj } }
生成されるバッチファイルの内容のサンプルは,以下の通りです.
cmdkey /generic:TERMSRV/192.168.0.9 /user:localUser001 /pass:Pass.Word >NUL mstsc /v:192.168.0.9 >NUL cmdkey /delete:TERMSRV/192.168.0.9 >NUL :: cmdkey /generic:TERMSRV/192.168.0.9 /user:localUser002 /pass:Pass.Word >NUL mstsc /v:192.168.0.9 >NUL cmdkey /delete:TERMSRV/192.168.0.9 >NUL :: cmdkey /generic:TERMSRV/192.168.0.9 /user:localUser003 /pass:Pass.Word >NUL mstsc /v:192.168.0.9 >NUL cmdkey /delete:TERMSRV/192.168.0.9 >NUL ::