[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 ---
