[GGH5.X/ExPack] 拡張パックの GGEasyPassword で複数のGGサーバー (ワークグループ) のアカウントのパスワードを変更したい.
技術ノート
2016/11/02
[番号]
技術ノート KGTN 2016102401
[現象]
[GGH5.X/ExPack] 拡張パックの GGEasyPassword で複数のGGサーバー (ワークグループ) のアカウントのパスワードを変更したい.
[説明]
以下に設定のサンプルを示します.
ファイル: GGEasyPassword.ini
[default] logLevel = 9 logd = %TEMP% command = psexec64 -u Administrator -p Passwd C:\PS1\GGEasyPassword\changePassword.bat %s %s
ファイル: changePassword.bat
echo off echo パスワードの変更処理を開始しました。 echo しばらくお待ち下さい… :: changePassword.bat "wguser9012" "Passwd" powershell C:\PS1\GGEasyPassword\changePassword.ps1 %1 %2 :: --- [EOF] ---
ファイル: changePassword.ps1
# 引数のチェック if($Args.Length -ne 2) { Write-Host "Usage: changePassword.ps1 <userid> <password>" Exit 1001 } $argUser = $Args[0] # ユーザーID ... "wguser9012" $argPass = $Args[1] # パスワード ... "Passwd" # パスワードを変更するサーバー $hostList = @("192.168.102.60","192.168.102.72","192.168.102.110") Function changePassword ([string]$user,[string]$pass) { # 共通 [bool]$myError = $false $hostname = hostname # パスワードの変更 try { [ADSI]$UpdateUser = "WinNT://$hostname/$user,User" [void]$UpdateUser.SetPassword($pass) [void]$UpdateUser.SetInfo() Write-Host "changePassword: SetPassword = OK (" $hostname ")" } catch { $myError = $true Write-Host "changePassword: SetPassword = NG (" $hostname ")" } return "{0,-16}, {1,-16}, {2}" -f $hostname,$user,!$myError } # 各サーバーでパスワードを変更 $ii = 0 ForEach($target In $hostList) { $ret = Invoke-Command $target -ScriptBlock ${function:changePassword} -ArgumentList $argUser,$argPass ++$ii "[{0}] {1}" -f $ii,$ret } #--- EOF ---