[Windows/PowerShell] 複数のGGサーバー (ワークグループ) にアカウントが存在するいかどうか調べたい.
技術ノート
2016/11/02
[番号]
技術ノート KGTN 2016102502
[現象]
[Windows/PowerShell] 複数のGGサーバー (ワークグループ) にアカウントが存在するいかどうか調べたい.
[説明]
以下にスクリプトのサンプルを示します.
ファイル: Conf\confHostList.ps1
# 処理の対象とするサーバー $hostList = @( "192.168.102.60", "192.168.102.72", "192.168.102.110" )
ファイル: checkUser.ps1
# ホスト情報の設定 Try { . (".\Conf\confHostList.ps1") } Catch { Write-Host "インクルードファイルが見つかりません。" Exit 1001 } # 引数のチェック if($Args.Length -ne 1) { Write-Host "Usage: checkUser.ps1 <userid>" Exit 1002 } $argUser = $Args[0] # ユーザーID ... "wguser9012" # ローカルアカウントの存在チェック(本体) Function checkUser ([string]$user) { # 共通 $hostname = hostname # ローカルアカウントの確認 try { $objComputer = [ADSI]("WinNT://$hostname,computer") $colUsers = ($objComputer.psbase.children | Where-Object {$_.psBase.schemaClassName -eq "User"} | Select-Object -expand Name) if($colUsers -contains $user) { $Ret = "Found" } else { $Ret = "Not found" } } catch { $Ret = "Error" } return "{0,-16}, {1,-16}, {2}" -f $hostname,$user,$Ret } # ローカルアカウントの存在チェック(呼出し) $ii = 0 ForEach($target In $hostList) { $ret = Invoke-Command $target -ScriptBlock ${function:checkUser} -ArgumentList $argUser ++$ii "[{0}] {1}" -f $ii,$ret }